blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java
@@ -22,6 +22,7 @@ import org.springblade.mdm.utils.FileContentUtil; import org.springblade.system.feign.ISysClient; import org.springblade.system.pojo.entity.Dict; import org.springblade.system.pojo.entity.DictBiz; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -45,7 +46,6 @@ private final OssTemplate ossTemplate; private final ProgramAnnotationService programAnnotationService; private final MachineService machineService; /** * é»è®¤æææé´ï¼ææ°ï¼,2å¹´ @@ -118,16 +118,24 @@ //å¤çç¨åºå ä¸å±çç¨åºèç¹111 List<NcNode> programNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list(); FlowProgramFile pfile; for(NcNode programNode : programNodes){ programNode.setIsLastEdition(0); programNode.setParentIds(hisPackageNode.getParentIds()+","+hisPackageNode.getId()); programNode.setIsLastEdition(0); pfile = flowProgramFileService.getById(programNode.getFlowProgramFileId()); if(programNode.getParentId().equals(pkgNode.getId()) && !pfile.isProgram()){ //å½ååºåç¨åºå åä¸çâå ¶ä»æä»¶âéç¨åºæä»¶ãä¸è®¾ç½®ä¸ºèçæ¬ï¼ç´æ¥æªå°åºåæ ä¸,两个ç½ç»ä¹é´åªäº¤æ¢ç¨åºæä»¶ï¼å ¶ä»æä»¶åªè½ä¿ç programNode.setIsLastEdition(1); } } nodeService.updateBatchById(programNodes); } nodeService.updateBatchById(historyProgramPackageNodes); Machine machine = machineService.getByCode(pkgNode.getMachineCode()); List<Dict> annoDicts = programAnnotationService.getAnnotionList(); List<DictBiz> annoDicts = programAnnotationService.getAnnotionList(); //æ°çæµç¨æä»¶ï¼éè¦å¨å èç¹ä¸æ°å»ºï¼ä¸è½ç¨èç List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,pkgNode.getProcessInstanceId()).list(); for(FlowProgramFile flowProgramFile : files){ @@ -156,28 +164,31 @@ } } /** * 设置åºå注é,å®ç°æ¹å¼ï¼è·åæä»¶åèä¸ï¼ä¿®æ¹åæ¿æ¢æä»¶ * @param flowProgramFile oss æä»¶ * */ void setGhAnnotation(FlowProgramFile flowProgramFile,String machineGroup,List<Dict> annoDicts) throws IOException { void setGhAnnotation(FlowProgramFile flowProgramFile,String machineGroup,List<DictBiz> annoDicts) throws IOException { String ossName = flowProgramFile.getOssName(); // try(InputStream ins = ossTemplate.statFileStream(ossName);){ byte[] bytes = IOUtils.toByteArray(ins); ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes); InputStream finishedStream = programAnnotationService.setGHAnnotation(byteInputStream,machineGroup,annoDicts); /* String annoTxt = programAnnotationService.generateAnnotation("GH",machineGroup,annoDicts); int statusLineIndex = 2; String line2 = FileContentUtil.readLineAt(byteInputStream,statusLineIndex);//第ä¸è¡åºè¯¥æ¯ç¶ææ³¨é //int statusLineIndex = 2; String line2 = FileContentUtil.readLineAt(byteInputStream,ProgramAnnotationService.STATUS_LINE_INDEX);//第ä¸è¡åºè¯¥æ¯ç¶ææ³¨é byteInputStream.reset(); InputStream finishedStream; if(programAnnotationService.isAnnotation(line2,machineGroup,annoDicts)){ finishedStream = FileContentUtil.replaceAtLine(byteInputStream,statusLineIndex,annoTxt); finishedStream = FileContentUtil.replaceAtLine(byteInputStream,ProgramAnnotationService.STATUS_LINE_INDEX,annoTxt); }else{ finishedStream = FileContentUtil.insertLine(byteInputStream,statusLineIndex,annoTxt); } finishedStream = FileContentUtil.insertLine(byteInputStream,ProgramAnnotationService.STATUS_LINE_INDEX,annoTxt); }*/ try(finishedStream) { finishedStream.reset(); BladeFile bfile = ossTemplate.putFile(flowProgramFile.getName(), finishedStream); blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
@@ -123,14 +123,16 @@ }else if(programPackageNode.hasCured()){ status = "GH"; } List<Dict> annotationList = programAnnotationService.getAnnotionList(); //List<Dict> annotationList = programAnnotationService.getAnnotionList(); for (NcNode node : programNodes) { String filePathInZip = packageFolder + node.getName(); programFile = this.flowProgramFileService.getById(node.getFlowProgramFileId()); if(programFile.isProgram()) {//ç¨åºæä»¶ï¼æä¼å å ¥å缩å InputStream inputStream = ossTemplate.statFileStream(programFile.getOssName()); InputStream addedIns1 = addSendDirAnnotation(inputStream, machine, annotationList); InputStream addedIns2 = addProgramStatusAnnotation(addedIns1, status, machine, annotationList); //InputStream addedIns1 = addSendDirAnnotation(inputStream, machine, annotationList); //InputStream addedIns2 = addProgramStatusAnnotation(addedIns1, status, machine, annotationList); String sendDir = machine.getProgSendDir()==null? StringUtil.EMPTY:machine.getProgSendDir(); InputStream addedIns2 = programAnnotationService.setSendDirAndStatusAnnotation(sendDir,status,inputStream,machine.getMachineGroupCode()); this.addInputStreamToZip(zipOut, addedIns2, filePathInZip); } } @@ -143,13 +145,14 @@ * @param inputStream * @return */ /* InputStream addSendDirAnnotation(InputStream inputStream,Machine machine,List<Dict> annotationList) throws IOException { //æ£æµç¬¬äºè¡æ¯å¦æ¯è·¯å¾ String annotationText = programAnnotationService.generateAnnotation(machine.getProgSendDir()==null? StringUtil.EMPTY:machine.getProgSendDir(),machine.getMachineGroupCode(),annotationList); //TODO æ¹å¤æè¡å 容 return FileContentUtil.insertLine(inputStream,1,annotationText); } }*/ /** * æ·»å ç¨åºä¸æ¹ç注é @@ -160,11 +163,12 @@ * @return * @throws IOException */ /* InputStream addProgramStatusAnnotation(InputStream inputStream,String status,Machine machine,List<Dict> annotationList) throws IOException { String annoText= programAnnotationService.generateAnnotation(status,machine.getMachineGroupCode(),annotationList); return FileContentUtil.insertLine(inputStream,2,annoText); } }*/ /** * 夿ä¸è¡ææ¬æ¯å¦æ¯æ³¨é @@ -172,11 +176,12 @@ * @param annotationList * @return */ /* boolean isAnnotation(String line,List<Dict> annotationList){ boolean isAnno = false; return isAnno; } }*/ blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProgramAnnotationService.java
@@ -4,12 +4,10 @@ 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.springblade.system.feign.IDictBizClient; import org.springblade.system.pojo.entity.DictBiz; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,17 +28,32 @@ public class ProgramAnnotationService { @Autowired private IDictClient dictClient; private IDictBizClient bizDictClient; private static final String DEFAULT_ANNOTATION_SETTING = "(,)"; public static final String ANNOTATION_DICT = "machine_annotation"; /** * åéç®å½è¡ç´¢å¼ï¼ç¬¬2è¡ï¼ 0 based */ public static final int SENDPATH_LINE_INDEX = 1; /** * ç¶æè¡ç´¢å¼ï¼ç¬¬ä¸è¡ï¼ 0 based */ public static final int STATUS_LINE_INDEX = 2; public List<Dict> getAnnotionList(){ List<Dict> annotationList; R<List<Dict>> dictsResult = dictClient.getList(ANNOTATION_DICT); if(dictsResult.isSuccess()) { annotationList = dictsResult.getData(); public static final String SQ = "SQ"; public static final String GH = "GH"; public static final String PL = "PL"; public List<DictBiz> getAnnotionList(){ List<DictBiz> annotationList; //R<List<Dict>> dictsResult = dictClient.getList(ANNOTATION_DICT); R<List<DictBiz>> dictBizResult = bizDictClient.getList(ANNOTATION_DICT); R<List<DictBiz>> gr = bizDictClient.getList("machine_group"); R<List<DictBiz>> gcate = bizDictClient.getList("org_category"); if(dictBizResult.isSuccess()) { annotationList = dictBizResult.getData(); }else{ annotationList = Collections.emptyList(); } @@ -55,9 +68,9 @@ * @param annotationList æ³¨éæ³¨éåå ¸é¡¹å表 * @return */ public boolean isAnnotation(String line,String machineGroupCode,List<Dict> annotationList){ public boolean isAnnotation(String line,String machineGroupCode,List<DictBiz> annotationList){ boolean isAnno = false; Optional<Dict> dictOpt = annotationList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst(); Optional<DictBiz> dictOpt = annotationList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst(); String annotationSetting = DEFAULT_ANNOTATION_SETTING; if(dictOpt.isPresent()) { annotationSetting = dictOpt.get().getRemark(); @@ -75,13 +88,12 @@ public String generateAnnotation(String oriTest,String machineGroupCode,List<Dict> annotationList) { public String generateAnnotation(String oriTest,String machineGroupCode,List<DictBiz> annotationList) { String annotation = oriTest; String begin = "("; String end = ")"; Optional<Dict> dictOpt = annotationList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst(); Optional<DictBiz> dictOpt = annotationList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst(); String annotationSetting = DEFAULT_ANNOTATION_SETTING; if(dictOpt.isPresent()) { annotationSetting = dictOpt.get().getRemark(); @@ -99,12 +111,12 @@ return annotation; } public String[] getAnnotationStartAndEnd(String machineGroupCode,List<Dict> annotationList) { public String[] getAnnotationStartAndEnd(String machineGroupCode,List<DictBiz> annotationList) { String begin = "("; String end = ")"; Optional<Dict> dictOpt = annotationList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst(); Optional<DictBiz> dictOpt = annotationList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst(); String annotationSetting = DEFAULT_ANNOTATION_SETTING; if(dictOpt.isPresent()) { annotationSetting = dictOpt.get().getRemark(); @@ -123,7 +135,7 @@ } public String removeAnnotation(String machineGroupCode,String text,String begin,String end){ List<Dict> annoDicts = getAnnotionList(); List<DictBiz> annoDicts = getAnnotionList(); String[] arr = getAnnotationStartAndEnd(machineGroupCode,annoDicts); return removeAnnotationInner(text,begin,end); } @@ -133,31 +145,31 @@ return temp; } /** * 为ç¨åºæä»¶å¢å 注é * @param oriText åå§ææ¬ * @param lineIndex è¡ç´¢å¼ 0 based * @param inputStream æä»¶çè¾å ¥æµ * @param machineGroup æºåºç» çææ³¨éç¨ * @return å æ³¨éåçæµ * 设置åºå注éè¡ * @param inputStream * @param machineGroup * @param annoDicts * @return * @throws IOException */ public InputStream setAnnotation(String oriText,int lineIndex,InputStream inputStream, String machineGroup) throws IOException { List<Dict> annoDicts = getAnnotionList(); public InputStream setGHAnnotation(InputStream inputStream, String machineGroup,List<DictBiz> annoDicts) throws IOException { // InputStream finishedStream; try(inputStream){ ByteArrayInputStream byteInputStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream)); String annoTxt = generateAnnotation(oriText,machineGroup,annoDicts);//å äºæ³¨éä¹åçææ¬ String annoTxt = generateAnnotation(GH,machineGroup,annoDicts);//å äºæ³¨éä¹åçææ¬ String lineText = FileContentUtil.readLineAt(byteInputStream,lineIndex);//第ä¸è¡åºè¯¥æ¯ç¶ææ³¨é String lineText = FileContentUtil.readLineAt(byteInputStream,STATUS_LINE_INDEX);//第ä¸è¡åºè¯¥æ¯ç¶ææ³¨é byteInputStream.reset(); if(isAnnotation(lineText,machineGroup,annoDicts)){ finishedStream = FileContentUtil.replaceAtLine(byteInputStream,lineIndex,annoTxt); finishedStream = FileContentUtil.replaceAtLine(byteInputStream,STATUS_LINE_INDEX,annoTxt); }else{ finishedStream = FileContentUtil.insertLine(byteInputStream,lineIndex,annoTxt); finishedStream = FileContentUtil.insertLine(byteInputStream,STATUS_LINE_INDEX,annoTxt); } finishedStream.reset(); @@ -165,5 +177,49 @@ return finishedStream; } /** * 为è¾å ¥æµè®¾ç½®åéç®å½(第äºè¡)åç¶æï¼ç¬¬ä¸è¡ï¼ * @param sendPath åéè·¯å¾ * @param statusText ç¶æææ¬ * @param inputStream è¾å ¥æµ * @param machineGroup æºåºç»ä»£ç * @return å 好åéè·¯å¾åç¶æææ¬çè¾å ¥æµ * @throws IOException */ public InputStream setSendDirAndStatusAnnotation(String sendPath,String statusText,InputStream inputStream, String machineGroup) throws IOException { List<DictBiz> annoDicts = getAnnotionList(); InputStream finishedStream; try(inputStream){ ByteArrayInputStream byteInputStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream)); //1å å ¥åéè·¯å¾ç注é String sendPathAnnotation = generateAnnotation(sendPath,machineGroup,annoDicts);//å äºæ³¨éä¹åçææ¬ InputStream insAfterSetSendDir ; String sendDirLine = FileContentUtil.readLineAt(byteInputStream,SENDPATH_LINE_INDEX);//第2è¡æ¯åéè·¯å¾ byteInputStream.reset(); String statusLine = FileContentUtil.readLineAt(byteInputStream,STATUS_LINE_INDEX);//第ä¸è¡æ¯ç¶ææ³¨é byteInputStream.reset(); if(isAnnotation(sendDirLine,machineGroup,annoDicts)){ insAfterSetSendDir = FileContentUtil.replaceAtLine(byteInputStream,SENDPATH_LINE_INDEX,sendPathAnnotation); }else{ insAfterSetSendDir = FileContentUtil.insertLine(byteInputStream,SENDPATH_LINE_INDEX,sendPathAnnotation); } insAfterSetSendDir.reset(); //å å ¥ç¶ææ³¨éè¡ String statusAnnotation = generateAnnotation(statusText,machineGroup,annoDicts);//注éåçç¶æææ¬ if(isAnnotation(statusLine,machineGroup,annoDicts)){ finishedStream = FileContentUtil.replaceAtLine(insAfterSetSendDir,STATUS_LINE_INDEX,statusAnnotation); }else{ finishedStream = FileContentUtil.insertLine(insAfterSetSendDir,STATUS_LINE_INDEX,statusAnnotation); } } return finishedStream; } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTest2Controller.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ package org.springblade.mdm.test; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.springblade.core.tool.api.R; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.gkw.programnode.entity.MachineFile; import org.springblade.mdm.program.entity.NcNode; import org.springblade.mdm.program.service.NcNodeService; import org.springblade.mdm.program.service.ProgramAnnotationService; import org.springblade.mdm.task.MachineFileScanTask; import org.springblade.mdm.utils.FileContentUtil; import org.springblade.system.feign.IDictBizClient; import org.springblade.system.pojo.entity.DictBiz; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; @Slf4j @RestController @RequestMapping("/pure") @Tag(name = "æµè¯", description = "æµè¯") public class MyTest2Controller { @Autowired private IDictBizClient bizDictClient; @GetMapping("/dict-biz") @Operation(summary = "æ¿æ¢æ³¨é", description = "testæ«æ") public R<List<DictBiz>> giz(String code) throws IOException { return this.bizDictClient.getList(code); } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
@@ -3,13 +3,17 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.springblade.core.tool.api.R; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.gkw.programnode.entity.MachineFile; import org.springblade.mdm.program.entity.NcNode; import org.springblade.mdm.program.service.NcNodeService; import org.springblade.mdm.program.service.ProgramAnnotationService; import org.springblade.mdm.task.MachineFileScanTask; import org.springblade.mdm.utils.FileContentUtil; import org.springblade.system.feign.IDictBizClient; import org.springblade.system.pojo.entity.DictBiz; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -18,6 +22,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.List; @Slf4j @@ -31,7 +36,10 @@ @Autowired private MachineFileScanTask machineFileScanTask; @Autowired private ProgramAnnotationService programAnnotationService; @Autowired private IDictBizClient bizDictClient; /** * æ°å¢ */ @@ -71,4 +79,27 @@ return R.success(); } @GetMapping("/repalce-anno") @Operation(summary = "æ¿æ¢æ³¨é", description = "testæ«æ") public R<List<String>> repalceAnno() throws IOException { InputStream res; try(FileInputStream fis = new FileInputStream("d:/b.txt");) { res = programAnnotationService.setSendDirAndStatusAnnotation("D:/mysend", "PL", fis,"FANUC"); } List<String> lines = null; if(res!=null) { try(res) { lines = IOUtils.readLines(res, "utf-8"); } } return R.data(lines); } @GetMapping("/dict-biz") @Operation(summary = "æ¿æ¢æ³¨é", description = "testæ«æ") public R<List<DictBiz>> giz(String code) throws IOException { return this.bizDictClient.getList(code); } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/OssTestController.java
@@ -16,6 +16,7 @@ import org.springblade.mdm.program.service.ProgramAnnotationService; import org.springblade.mdm.utils.FileContentUtil; import org.springblade.system.pojo.entity.Dict; import org.springblade.system.pojo.entity.DictBiz; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -98,7 +99,7 @@ String filename = "CP3-1-1-1.txt"; String machineGroup = "FANUC"; List<Dict> annoDicts = programAnnotationService.getAnnotionList(); List<DictBiz> annoDicts = programAnnotationService.getAnnotionList(); BladeFile bfile = null; try(InputStream ins = ossTemplate.statFileStream(ossName);){ byte[] bytes = IOUtils.toByteArray(ins); blade-service/blade-mdm/src/main/resources/rebel.xml
ÎļþÒÑɾ³ý blade-service/blade-mdm/src/test/java/org/springblade/mdm/program/service/ProgramAnnotationServiceTest.java
@@ -2,7 +2,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springblade.system.pojo.entity.Dict; import org.springblade.system.pojo.entity.DictBiz; import java.util.Arrays; import java.util.List; @@ -12,40 +12,37 @@ @Test public void testIsAnnotation(){ ProgramAnnotationService s = new ProgramAnnotationService(); Dict fanucDict = new Dict(); DictBiz fanucDict = new DictBiz(); fanucDict.setCode("machine_annotation"); fanucDict.setDictKey("FANUC"); fanucDict.setRemark("(,)"); Dict xmz = new Dict(); DictBiz xmz = new DictBiz(); xmz.setCode("machine_annotation"); xmz.setDictKey("XIMENZI"); xmz.setRemark("*-,"); List<Dict> dictList = Arrays.asList(fanucDict, xmz); List<DictBiz> dictList = Arrays.asList(fanucDict, xmz); Assertions.assertTrue(s.isAnnotation("(abc)","FANUC", dictList)); Assertions.assertFalse(s.isAnnotation("*-","FANUC",dictList)); Assertions.assertTrue(s.isAnnotation("*-","XIMENZI", dictList)); } @Test public void testIsAnnotation2(){ ProgramAnnotationService s = new ProgramAnnotationService(); Dict fanucDict = new Dict(); DictBiz fanucDict = new DictBiz(); fanucDict.setCode("machine_annotation"); fanucDict.setDictKey("FANUC"); fanucDict.setRemark("(,)"); Dict xmz = new Dict(); DictBiz xmz = new DictBiz(); xmz.setCode("machine_annotation"); xmz.setDictKey("XIMENZI"); xmz.setRemark("*-,"); List<Dict> dictList = Arrays.asList(fanucDict, xmz); List<DictBiz> dictList = Arrays.asList(fanucDict, xmz); Assertions.assertEquals("(A)",s.generateAnnotation("A","FANUC",dictList)); Assertions.assertEquals("*-A",s.generateAnnotation("A","XIMENZI",dictList)); }