blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
@@ -17,11 +17,9 @@ import org.springblade.mdm.program.entity.NcNode; import org.springblade.mdm.program.service.NcNodeAutoCreateService; import org.springblade.mdm.program.service.NcNodeService; import org.springblade.mdm.program.service.NcProgramApprovedService; import org.springblade.mdm.program.service.ProgramAnnotationService; import org.springblade.mdm.program.service.programannotation.*; import org.springblade.mdm.utils.ProgramFileNameParser; import org.springblade.system.pojo.entity.DictBiz; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -188,7 +186,7 @@ if(annoProps == null){ annoProps = AnnotationProperties.getDefault(); }*/ InputStream finishedStream = annoProcessor.setFilenameAnnotation(filename,byteInputStream); InputStream finishedStream = annoProcessor.putFilenameAnnotation(filename,byteInputStream); //InputStream finishedStream = AnnotationUtil.setAnnotationAndGetInputStream(byteInputStream, "GH", annoProps.getStatusLineIndex(), controlSystem, annoDictList); try(finishedStream) { finishedStream.reset(); blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java
@@ -4,16 +4,25 @@ import jakarta.servlet.ServletOutputStream; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.springblade.core.mp.base.BizServiceImpl; import org.springblade.core.oss.OssTemplate; import org.springblade.core.tool.utils.DateUtil; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.basesetting.machine.service.MachineService; import org.springblade.mdm.machinefile.entity.MachineAcceptedFile; import org.springblade.mdm.machinefile.entity.MachineFile; import org.springblade.mdm.program.entity.NcProgramExchange; import org.springblade.mdm.program.mapper.NcProgramExchangeMapper; import org.springblade.mdm.program.service.ProgramAnnotationService; import org.springblade.mdm.program.service.programannotation.*; import org.springblade.mdm.utils.FileContentUtil; import org.springblade.mdm.utils.ProgramFileNameParser; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; @@ -32,8 +41,10 @@ public class NcProgramExportInnerService extends BizServiceImpl<NcProgramExchangeMapper, NcProgramExchange> { private final MachineAcceptedFileService machineAcceptedService; private final OssTemplate ossTemplate; private final MachineFileService machineFileService; private final MachineService machineService; private final MachineAnnotationConfig annoConfig; private final ProgramAnnotationService programAnnotationService; /** * 导出到涉密网 * @param acceptedFileIds @@ -49,13 +60,13 @@ Map<String,List<MachineAcceptedFile>> map = acceptedFiles.stream() .collect(Collectors.groupingBy(s -> ProgramFileNameParser.parseProgramName(s.getName()).logicProgramName())); List<MachineAcceptedFile> exportedFiles = new ArrayList<>(); for (Map.Entry<String, List<MachineAcceptedFile>> entry : map.entrySet()) { String programName = entry.getKey(); List<MachineAcceptedFile> acceptedFileList = entry.getValue(); for (MachineAcceptedFile acceptedFile : acceptedFileList) { try(InputStream ins = ossTemplate.statFileStream(acceptedFile.getOssName()) ) { addInputStreamToZip(zipOut,ins , programName + "/" + acceptedFile.getName()); MachineFile machineFile = machineFileService.getById(acceptedFile.getMachineFileId()); addInputStreamToZip(zipOut,ins , programName + "/" + acceptedFile.getName(),acceptedFile.getName(),machineFile.getMachineCode()); } acceptedFile.setExportTime(DateUtil.now()); } @@ -69,21 +80,42 @@ } public void addInputStreamToZip(ZipOutputStream zipOut, InputStream inputStream, String entryName) public void addInputStreamToZip(ZipOutputStream zipOut, InputStream inputStream, String entryName,String filename,String machineCode) throws IOException { // 创建新的 ZIP 条目 ZipEntry zipEntry = new ZipEntry(entryName); zipOut.putNextEntry(zipEntry); InputStream insAdded = setAnnotations(inputStream,filename,machineCode); // 将输入流写入 ZIP 输出流 byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) >= 0) { while ((length = insAdded.read(buffer)) >= 0) { zipOut.write(buffer, 0, length); } // 关闭当前条目 zipOut.closeEntry(); } InputStream setAnnotations(InputStream inputStream,String filename,String machineCode) throws IOException { Machine machine = this.machineService.getByCode(machineCode); AnnotationProcessor annoProcessor = ProcessorHelper.getProcessor(machine.getControlSystem(),annoConfig); AnnotationData annoData = new AnnotationData(); annoData.setFilename(filename); annoData.setSendPath(machine.getProgSendDir()); AnnotationProperties annoProps = annoProcessor.getAnnotationProperties(); ByteArrayInputStream bais = new ByteArrayInputStream(IOUtils.toByteArray(inputStream)); String statusLine = FileContentUtil.readLineAt(bais,annoProps.getStatusLineIndex()); String status = programAnnotationService.removeAnnotation(machine.getControlSystem(),statusLine); if(StringUtils.equalsAny(status,"SQ","GH","PL")){ } bais.reset(); annoData.setProgramStatus("3"); return annoProcessor.putAnnotation(annoData,bais); } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
@@ -187,17 +187,5 @@ @GetMapping("/download-by-nodeid") @Operation(summary = "下载节点对应的文件", description = "下载节点对应的文件") public void downloadByNodeId(@Parameter(description = "节点id") Long nodeId, HttpServletResponse response) throws IOException { NcNode ncnode = ncNodeService.getById(nodeId); if(ncnode.getFlowProgramFileId() != null) { flowProgramFileService.download(ncnode.getFlowProgramFileId(),response); }else{ log.error("非文件节点"); throw new ServiceException("节点无文件id"); } } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeHisController.java
@@ -98,4 +98,18 @@ return R.fail(e.getMessage()); } } @GetMapping("/download-by-nodeid") @Operation(summary = "下载节点对应的文件", description = "下载节点对应的文件") public void downloadByNodeId(@Parameter(description = "节点id") Long nodeId, HttpServletResponse response) throws IOException { NcNodeHis node = nodeHisService.getById(nodeId); if(node.getFlowProgramFileId() != null) { flowProgramFileService.download(node.getFlowProgramFileId(),response); }else{ log.error("非文件节点"); throw new ServiceException("节点无文件id"); } } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeHisService.java
@@ -37,7 +37,7 @@ * @param time */ public void mergeNodeToHisGeTime(Date time) { Date okTime = DateUtil.minusSeconds(time,10); Date okTime = DateUtil.minusSeconds(time,10);//避免mysql数据库时间不精确导致不能同步 List<NcNode> nodes = ncNodeService.lambdaQuery().ge(NcNode::getUpdateTime,okTime) .in(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE).list(); blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
@@ -26,7 +26,6 @@ import org.springblade.mdm.program.service.programannotation.MachineAnnotationConfig; import org.springblade.mdm.program.service.programannotation.ProcessorHelper; import org.springblade.system.feign.IDictClient; import org.springblade.system.pojo.entity.DictBiz; import org.springframework.stereotype.Service; import java.io.*; @@ -131,7 +130,7 @@ annoData.setProgramStatus(status); annoData.setDeviation(programPackageNode.getDeviation()); annoData.setFilename(programFile.getName()); InputStream addedInsFinal = annoProcessor.setAnnotation(annoData,inputStream); InputStream addedInsFinal = annoProcessor.putAnnotation(annoData,inputStream); addedInsFinal.reset(); /* InputStream addedInsFinal; blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
@@ -20,7 +20,7 @@ protected AnnotationProperties annotationProperties; @Override public InputStream setFilenameAnnotation(String fileName, InputStream inputStream) throws IOException { public InputStream putFilenameAnnotation(String fileName, InputStream inputStream) throws IOException { List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList(); ByteArrayInputStream bais = new ByteArrayInputStream(com.qiniu.util.IOUtils.toByteArray(inputStream)); @@ -39,7 +39,7 @@ } @Override public InputStream setAnnotation(AnnotationData annoData,InputStream inputStream) throws IOException { public InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException { List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList(); InputStream finishedStream; @@ -82,6 +82,10 @@ this.annotationProperties= annotationProperties; } @Override public AnnotationProperties getAnnotationProperties(){ return annotationProperties; } public abstract String getControlSystem(); } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java
@@ -1,15 +1,7 @@ package org.springblade.mdm.program.service.programannotation; import org.apache.commons.lang3.StringUtils; import org.springblade.core.log.exception.ServiceException; import org.springblade.mdm.program.service.ProgramAnnotationService; import org.springblade.mdm.program.vo.ProgramAnnotation; import org.springblade.system.pojo.entity.DictBiz; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Optional; public interface AnnotationProcessor { @@ -17,7 +9,10 @@ void setControlSystem(String controlSystemDictVal); void setAnnotationProperties(AnnotationProperties annotationProperties); String getControlSystem(); InputStream setAnnotation(AnnotationData annoData,InputStream inputStream) throws IOException; InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException; InputStream setFilenameAnnotation(String programName,InputStream inputStream) throws IOException; InputStream putFilenameAnnotation(String programName, InputStream inputStream) throws IOException; AnnotationProperties getAnnotationProperties(); //InputStream puttSendPathAnnotation(String programName, InputStream inputStream) throws IOException; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
@@ -1,17 +1,11 @@ package org.springblade.mdm.program.service.programannotation; import com.qiniu.util.IOUtils; import org.apache.commons.io.FilenameUtils; import org.springblade.mdm.program.service.ProgramAnnotationService; import org.springblade.mdm.utils.FileContentUtil; import org.springblade.system.pojo.entity.DictBiz; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; @Component("defaultProcessor") @@ -23,10 +17,10 @@ @Override public InputStream setAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException { InputStream insAfter = super.setFilenameAnnotation(annoData.getFilename(),inputStream); public InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException { InputStream insAfter = super.putFilenameAnnotation(annoData.getFilename(),inputStream); return super.setAnnotation(annoData, insAfter); return super.putAnnotation(annoData, insAfter); } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/FanucProcessor.java
@@ -22,7 +22,7 @@ private Pattern PATTERN = Pattern.compile("^[oO]\\d{4}"); private final int O_LINE = 1; @Override public InputStream setAnnotation(AnnotationData annoData,InputStream inputStream) throws IOException { public InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException { //在O0001 这种文字后面增加文件名(不带扩展名) ByteArrayInputStream bais = new ByteArrayInputStream(IOUtils.toByteArray(inputStream)); String line = FileContentUtil.readLineAt(bais,O_LINE); @@ -36,7 +36,7 @@ }else{ ins1 = bais; } return super.setAnnotation(annoData, ins1); return super.putAnnotation(annoData, ins1); } blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
@@ -16,6 +16,7 @@ import org.springblade.mdm.machinefile.entity.MachineFile; import org.springblade.mdm.machinefile.service.MachineFileScanService; import org.springblade.mdm.program.entity.NcNode; import org.springblade.mdm.program.service.NcNodeHisService; import org.springblade.mdm.program.service.NcNodeService; import org.springblade.mdm.program.service.ProgramAnnotationService; import org.springblade.mdm.task.InternalEmailNotifyTask; @@ -32,6 +33,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.List; @Slf4j @@ -57,6 +59,9 @@ private WIthdrawService withdrawService; @Autowired private InternalEmailNotifyTask notifyTask; @Autowired private NcNodeHisService nodeHisService; /** * 新增 */ @@ -127,4 +132,10 @@ SOAPException s; notifyTask.execute(); } @GetMapping("/movehis") public void moveHis(Date time){ //format:?time=2025-09-16%2010:11:10 nodeHisService.mergeNodeToHisGeTime(time); } }