| | |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.io.FilenameUtils; |
| | | import org.apache.commons.io.IOUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.mp.base.BizServiceImpl; |
| | |
| | | import org.springblade.mdm.program.entity.NcNode; |
| | | import org.springblade.mdm.program.entity.NcProgramExchange; |
| | | import org.springblade.mdm.program.mapper.NcProgramExchangeMapper; |
| | | import org.springblade.mdm.program.service.programannotation.AnnotationProcessor; |
| | | import org.springblade.mdm.program.service.programannotation.DefaultProcessor; |
| | | import org.springblade.mdm.program.service.programannotation.FanucProcessor; |
| | | import org.springblade.mdm.program.service.programannotation.MachineAnnotationConfig; |
| | | import org.springblade.mdm.program.vo.DncSendBackData; |
| | | import org.springblade.mdm.program.vo.DncSendBackFile; |
| | | import org.springblade.mdm.program.vo.ProgramAnnotation; |
| | |
| | | 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; |
| | | |
| | |
| | | private final DncBackFileService dncBackFileService; |
| | | private final MachineService machineService; |
| | | private final ParamService paramService; |
| | | private final MachineAnnotationConfig machineAnnotationConfig; |
| | | |
| | | private final FanucProcessor fanucProcessor; |
| | | private final DefaultProcessor defaultProcessor; |
| | | /** |
| | | * 偏离单文件末尾的模式:P+数字 |
| | | */ |
| | |
| | | DncSendBackData progData = new DncSendBackData(); |
| | | String folderName = StringUtils.removeEnd(entryName,"/"); |
| | | |
| | | PackageAndProcessEdition pkgAndEdition = parseProgramPackageFromFolderName(folderName); |
| | | String packageName = pkgAndEdition.getProgramPackageName(); |
| | | String processEdition = pkgAndEdition.getProcessEdition(); |
| | | //PackageAndProcessEdition pkgAndEdition = parseProgramPackageFromFolderName(folderName); |
| | | String packageName = folderName;//pkgAndEdition.getProgramPackageName(); |
| | | //String processEdition = pkgAndEdition.getProcessEdition(); |
| | | /* |
| | | if(StringUtils.isBlank(packageName) || StringUtils.isBlank(processEdition)){ |
| | | throw new ServiceException("包内文件夹名格式错误应该为[零组件号-工序号-工序版次]:"+folderName); |
| | | } |
| | | throw new ServiceException("包内文件夹名格式错误,应该为[零组件号-工序号-工序版次]:"+folderName); |
| | | }*/ |
| | | |
| | | progData.setProgramName(packageName); |
| | | String statusLine; |
| | |
| | | if(optFilename.isPresent()){ |
| | | entry = zipFile.getEntry(optFilename.get()); |
| | | InputStream ins = zipFile.getInputStream(entry); |
| | | ByteArrayInputStream bais = new ByteArrayInputStream(IOUtils.toByteArray(ins));; |
| | | progData.setFileBackTime(DateUtil.fromInstant(entry.getLastModifiedTime().toInstant())); |
| | | statusLine = FileContentUtil.readLineAt(ins,2); |
| | | //machineAnnotationConfig.getConfigMap().get(machine.getcon) |
| | | Pattern fanucPattern = Pattern.compile("^[oO]\\d{4}"); |
| | | String testLine = FileContentUtil.readLineAt(bais,2);//TODO,fanuc这行是下发路径,其他机器是状态 |
| | | bais.reset(); |
| | | //boolean isFanuc = fanucPattern.matcher(testLine).matches(); |
| | | boolean isFanuc = !StringUtils.containsAny(testLine,"(SQ)","(GH)","(PL)"); |
| | | if(isFanuc){ |
| | | statusLine = FileContentUtil.readLineAt(bais,3);//fanuc的状态读第4行 |
| | | }else{ |
| | | statusLine = testLine; |
| | | } |
| | | |
| | | if(statusLine.contains("SQ")){ |
| | | //试切 |
| | | programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName,processEdition); |
| | | programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName);//,processEdition |
| | | }else if(statusLine.contains("GH")){ |
| | | //固化 |
| | | programPackageNode = ncNodeService.getLastEditionCuredProgramPackage(packageName,processEdition); |
| | | programPackageNode = ncNodeService.getLastEditionCuredProgramPackage(packageName); |
| | | }else if(statusLine.contains("PL")){ |
| | | //偏离 |
| | | programPackageNode =ncNodeService.getLastEditionDeviationProgramPackage(packageName,processEdition); |
| | | programPackageNode =ncNodeService.getLastEditionDeviationProgramPackage(packageName); |
| | | }else{ |
| | | //查询是否车床,是车床可以放过,按试切处理 |
| | | programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName,processEdition); |
| | | programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName); |
| | | if(programPackageNode!=null){ |
| | | Machine machine = machineService.getByCode(programPackageNode.getMachineCode()); |
| | | String chechuangVal = paramService.turninngValue(); |
| | |
| | | * @param folderName 文件夹名 |
| | | * @return 结构数据 |
| | | */ |
| | | /* |
| | | PackageAndProcessEdition parseProgramPackageFromFolderName(String folderName){ |
| | | int index = StringUtils.lastIndexOf(folderName,'-'); |
| | | String processEditon = ""; |
| | | String temp; |
| | | String packageName = ""; |
| | | if(index != -1){ |
| | | processEditon = folderName.substring(index+1); |
| | |
| | | result.setProgramPackageName(packageName); |
| | | result.setProcessEdition(processEditon); |
| | | return result; |
| | | } |
| | | }*/ |
| | | |
| | | /** |
| | | * 入库回传文件,并启动固化流程 |
| | |
| | | for(String dir : dirList){ |
| | | String folderName = StringUtils.removeEnd(dir,"/"); |
| | | |
| | | PackageAndProcessEdition pkgAndEdition = parseProgramPackageFromFolderName(folderName); |
| | | String programPackageName = pkgAndEdition.getProgramPackageName(); |
| | | //PackageAndProcessEdition pkgAndEdition = folderName;//parseProgramPackageFromFolderName(folderName); |
| | | String programPackageName = folderName; //pkgAndEdition.getProgramPackageName(); |
| | | |
| | | Optional<NcNode> optPackageNode = allAcceptPackages.stream().filter(node -> StringUtils.equals(node.getName(),programPackageName)).findFirst(); |
| | | |
| | |
| | | private String programPackageName; |
| | | private String processEdition; |
| | | |
| | | public String programName(){ |
| | | return programPackageName+"-"+processEdition; |
| | | } |
| | | } |