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); } }