blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
@@ -152,7 +152,7 @@ nodeService.updateBatchById(historyProgramPackageNodes); Machine machine = machineService.getByCode(cureNode.getMachineCode()); List<DictBiz> annoDicts = programAnnotationService.getAnnotionList(); List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList(); //æ°çæµç¨æä»¶ï¼éè¦å¨å èç¹ä¸æ°å»ºï¼ä¸è½ç¨èç List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,pkgNode1.getProcessInstanceId()).list(); for(FlowProgramFile flowProgramFile : files){ blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramConfirmTableService.java
@@ -2,10 +2,7 @@ package org.springblade.mdm.flow.service; import com.itextpdf.text.*; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.text.pdf.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.flowable.engine.HistoryService; @@ -25,11 +22,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Date; import java.util.*; import java.util.List; import java.util.Optional; /** * æ°æ§ç¨åºç¡®è®¤è¡¨è¾åºæå¡ @@ -64,7 +62,68 @@ BaseFont bfChinese = getBaseFont(); return new Font(bfChinese, 12, Font.NORMAL); } public void generateTempPDF()throws Exception { PdfReader reader = null; PdfStamper ps = null; OutputStream fos = null; ByteArrayOutputStream bos = null; try { String fileName = "d:/qrb.pdf";//模æ¿ç»å¯¹è·¯å¾ reader = new PdfReader(fileName); bos = new ByteArrayOutputStream(); ps = new PdfStamper(reader, bos); // 使ç¨ä¸æåä½ //BaseFont bf = BaseFont.createFont("sTsong-Light", "uniGB-Ucs2-H", BaseFont.NOT_EMBEDDED); BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); ArrayList<BaseFont> fontList = new ArrayList<BaseFont>(); fontList.add(bf); AcroFields fields = ps.getAcroFields(); fields.setSubstitutionFonts(fontList); fillData(fields, data());//æ //å¿ é¡»è¦è°ç¨è¿ä¸ªï¼å¦åææ¡£ä¸ä¼çæç ps.setFormFlattening(true); if (ps != null) { ps.close(); } //çæpdfè·¯å¾åæ¾çè·¯å¾ fos = new FileOutputStream("d:/bb2.pdf"); fos.write(bos.toByteArray()); } catch (Exception e) { e.printStackTrace(); } finally { if (fos != null) { fos.flush(); fos.close(); if (bos != null) { bos.close(); } if (reader != null) { reader.close(); } } } } public void fillData(AcroFields fields, Map<String, String> data) { try { for (String key : data.keySet()) { String value = data.get(key); // ä¸ºåæ®µèµå¼,注æå段åç§°æ¯åºå大å°åçfields.setField(key,value); fields.setField(key,value); } }catch(Exception e){ e.printStackTrace(); } } Map<String,String> data(){ Map<String,String> ret = new HashMap<>(); ret.put("drawingName","䏿å¾å"); ret.put("craftEdition","TH0001"); return ret; } public void exportConfirmTable(String processInstanceId, OutputStream os) throws DocumentException, IOException { BaseFont bfChinese = getBaseFont(); blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/TaskDispatchService.java
@@ -67,7 +67,7 @@ LocalDateTime checkStartDate = LocalDateTime.now().minusDays(taskDupDays); LambdaQueryChainWrapper<TaskDispatch> q = lambdaQuery().eq(TaskDispatch::getDrawingNo,startVO.getDrawingNo()) .eq(TaskDispatch::getProcessNo,startVO.getProcessNo()) .eq(TaskDispatch::getProcessEdition,startVO.getProcessEdition()) //.eq(TaskDispatch::getProcessEdition,startVO.getProcessEdition()) .eq(TaskDispatch::getMachineCode,startVO.getMachineCode()) .gt(TaskDispatch::getCreateTime,checkStartDate); blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
@@ -255,11 +255,11 @@ if (matchedMachine != null) { vo.setName(parseProgramName(vo.getFilename())); vo.setMachineCode(matchedMachine.getCode()); //String sendPath = programAnnotationService.removeAnnotation(matchedMachine.getMachineGroupCode(),line1,"(",")"); vo.setFullPath(path.toString());//æä»¶å°å vo.setSendPath(matchedMachine.getProgSendDir()); vo.setId(vo.getFullPath()); vo.setProgramStatus(programAnnotationService.removeAnnotation(matchedMachine.getMachineGroupCode(),line2,"(",")")); vo.setProgramStatus(programAnnotationService.removeAnnotation(matchedMachine.getMachineGroupCode(),line2)); list.add(vo); } @@ -267,17 +267,9 @@ } catch (IOException e) { log.error("读åæä»¶md5失败",e); } //List<String> files = new ArrayList<>(); // è¿éå¯ä»¥æ·»å 对æä»¶çå¤çé»è¾ } } } return list; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
@@ -104,7 +104,7 @@ deviationSerial = ncNodeService.getDeviationSerialForNode(packageNode); } List<DictBiz> annotationDictList= programAnnotationService.getAnnotionList(); List<DictBiz> annotationDictList= programAnnotationService.getAnnotionDictList(); for (NcNode node : programNodes) { String filePathInZip = genFilePathInZip(packageFolder,node,deviationSerial); programFile = this.flowProgramFileService.getById(node.getFlowProgramFileId()); blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProgramAnnotationService.java
@@ -5,7 +5,9 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.tool.api.R; import org.springblade.mdm.program.vo.ProgramAnnotation; import org.springblade.mdm.utils.FileContentUtil; import org.springblade.system.feign.IDictBizClient; import org.springblade.system.pojo.entity.DictBiz; @@ -52,12 +54,10 @@ public static final String GH = "GH"; public static final String PL = "PL"; public List<DictBiz> getAnnotionList(){ public List<DictBiz> getAnnotionDictList(){ 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{ @@ -76,30 +76,20 @@ */ public boolean isAnnotation(String line,String machineGroupCode,List<DictBiz> annotationList){ boolean isAnno = false; 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(); } String begin = ""; String end = ""; String[] arr = annotationSetting.split(","); if(arr.length == 2){ begin = arr[0]; end = arr[1]; } ProgramAnnotation progAnnotation = this.getProgramAnnotationFormat(machineGroupCode,annotationList); line = StringUtils.trim(line);//å»é¦å°¾ç©ºæ ¼ isAnno = StringUtils.startsWith(line,begin) && StringUtils.endsWith(line,end); return isAnno; return progAnnotation.isAnnotation(line); } public String generateAnnotation(String oriTest,String machineGroupCode,List<DictBiz> annotationList) { /* String annotation = oriTest; String begin = "("; String end = ")"; Optional<DictBiz> dictOpt = annotationList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst(); String annotationSetting = DEFAULT_ANNOTATION_SETTING; if(dictOpt.isPresent()) { @@ -110,14 +100,14 @@ begin = arr[0]; end = arr[1]; }else if(arr.length == 1){ begin = begin = arr[0]; begin = arr[0]; end = ""; } annotation = begin + oriTest + end; return annotation; */ ProgramAnnotation progAnnotation = this.getProgramAnnotationFormat(machineGroupCode,annotationList); return progAnnotation.addAnnotation(oriTest); } /* public String[] getAnnotationStartAndEnd(String machineGroupCode,List<DictBiz> annotationList) { String begin = "("; @@ -136,47 +126,44 @@ begin = arr[0]; end = ""; } ProgramAnnotation progAnno = this.getProgramAnnotationFormat(machineGroupCode,annotationList); return new String[]{begin,end}; } public String removeAnnotation(String machineGroupCode,String text,String begin,String end){ List<DictBiz> annoDicts = getAnnotionList(); String[] arr = getAnnotationStartAndEnd(machineGroupCode,annoDicts); return removeAnnotationInner(text,begin,end); } public static String removeAnnotationInner(String text,String begin,String end){ String temp = StringUtils.removeEnd(StringUtils.removeStart(text,begin),end); return temp; } */ /** * 设置åºå注éè¡ * @param inputStream * @param machineGroup * @param annoDictList * @return * @throws IOException * æå注éä¸çææ¬ * @param machineGroupCode æºåºç»ä»£ç * @param text æ¸ é¤æ³¨éæ è®° * @return æ¸ é¤åçææ¬ */ public String removeAnnotation(String machineGroupCode,String text){ List<DictBiz> annoDicts = getAnnotionDictList(); ProgramAnnotation panno = this.getProgramAnnotationFormat(machineGroupCode,annoDicts); //String[] arr = getAnnotationStartAndEnd(machineGroupCode,annoDicts); return panno.cleanAnnotation(text); } /** * 设置åºå注éè¡ * @param inputStream è¾å ¥æ¡ * @param machineGroup æºåºç»ç¼ç * @param annoDictList 注éåå ¸é ç½® * @return å 好注éç * @throws IOException */ public InputStream setGHAnnotation(InputStream inputStream, String machineGroup,List<DictBiz> annoDictList) throws IOException { return setAnnotationAndGetInputStream(inputStream, machineGroup, annoDictList, GH, STATUS_LINE_INDEX); } /** * 设置åç¦»åæ³¨é * @param inputStream * @param machineGroup * @param annoDictList * @return * @throws IOException * @param inputStream ææ¬è¾å ¥æµ * @param machineGroup æºåºç»ä»£ç * @param annoDictList 注éåå ¸é ç½® * @return å 好注éçè¾å ¥æµ * @throws IOException è®¿é®æµå¯è½æåºå¼å¸¸ */ public InputStream setPldAnnotation(String deviation,InputStream inputStream,String machineGroup,List<DictBiz> annoDictList) throws IOException { // return setAnnotationAndGetInputStream(inputStream, machineGroup, annoDictList, deviation, STATUS_DEVIATION_INDEX); } @@ -213,7 +200,7 @@ * @throws IOException */ public InputStream setSendDirAndStatusAnnotation(String sendPath,String statusText,InputStream inputStream, String machineGroup) throws IOException { List<DictBiz> annoDicts = getAnnotionList(); List<DictBiz> annoDicts = getAnnotionDictList(); InputStream finishedStream; try(inputStream){ @@ -222,12 +209,13 @@ //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(); InputStream insAfterSetSendDir ; if(isAnnotation(sendDirLine,machineGroup,annoDicts)){ insAfterSetSendDir = FileContentUtil.replaceAtLine(byteInputStream,SENDPATH_LINE_INDEX,sendPathAnnotation); }else{ @@ -246,5 +234,39 @@ return finishedStream; } /** * è§£æåºæºåºç¨åºæ³¨éçæ ¼å¼ * @param machineGroupCode æºåºç» * @param annoDictList é ç½®çæ³¨éåå ¸æ°æ® * @return */ ProgramAnnotation getProgramAnnotationFormat(String machineGroupCode,List<DictBiz> annoDictList){ String begin; String end; Optional<DictBiz> dictOpt = annoDictList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst(); String annotationSetting = DEFAULT_ANNOTATION_SETTING; if(dictOpt.isPresent()) { annotationSetting = dictOpt.get().getRemark(); } String[] arr = StringUtils.split(annotationSetting,","); if(arr.length == 2){ begin = arr[0]; end = arr[1]; }else if(arr.length == 1){ begin = arr[0]; end = ""; }else{ throw new ServiceException("æ³¨éæ ¼å¼é ç½®é误ï¼åºè¯¥ä¸º1å°2段ï¼ä¸é´ç¨éå·åé"); } ProgramAnnotation programAnnotation = new ProgramAnnotation(); programAnnotation.setBegin(begin); programAnnotation.setEnd(end); return programAnnotation; } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/ProgramAnnotation.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ package org.springblade.mdm.program.vo; import lombok.Getter; import lombok.Setter; import org.apache.commons.lang3.StringUtils; /** * ç¨åºæ³¨é */ @Getter @Setter public class ProgramAnnotation { /** * 注éå¼å§ */ private String begin; /** * 注éç»æ */ private String end; /** * å¤æææ¬æ¯å¦æ¯æ³¨é * @param text å¾ å¤æææ¬ * @return ç³ä½iu */ public boolean isAnnotation(String text){ return StringUtils.startsWith(text,this.begin) && StringUtils.endsWith(text,this.end); } /** * ç辰注é * @param oriTest åå§ææ¬ * @return å 䏿³¨éåçææ¬ */ public String addAnnotation(String oriTest) { return begin + oriTest + end; } public String cleanAnnotation(String annotatedText){ return StringUtils.removeEnd(StringUtils.removeStart(annotatedText,begin),end); } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/OssTestController.java
@@ -90,7 +90,7 @@ BladeFile bfile = ossTemplate.putFile("replaceok.txt",newins); return R.data(bfile.getLink()+","+bfile.getName()); } /* @GetMapping("/replace2") @ApiOperationSupport(order = 2) @Operation(summary = "æ¿æ¢å 容2") @@ -122,14 +122,14 @@ //flowProgramFile.setOssName(bfile.getName()); } } /* InputStream ins = ossTemplate.statFileStream(ossName); InputStream newins = FileContentUtil.replaceAtLine(fis,2,"GHTEST"); BladeFile bfile = ossTemplate.putFile("replaceok.txt",newins); */ return R.data(bfile.getLink()+","+bfile.getName()); } */ } blade-service/blade-mdm/src/test/java/org/springblade/mdm/flow/service/ProgramConfirmTableServiceTest.java
@@ -2,68 +2,32 @@ import com.itextpdf.text.Document; import com.itextpdf.text.PageSize; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.text.pdf.*; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.flow.vo.ApproveTableInfo; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.Map; public class ProgramConfirmTableServiceTest { @Test public void testExportConfirmTable(){ public void test(){ ProgramConfirmTableService s = new ProgramConfirmTableService(); try { BaseFont bfChinese = s.getBaseFont(); Document document = new Document(PageSize.B5.rotate()); String filename = "c"+System.currentTimeMillis()+".pdf"; File pdf = new File(filename); if(pdf.exists()){ pdf.delete(); } PdfWriter.getInstance(document,new FileOutputStream(pdf)); document.open(); FlowProgramProperties props = new FlowProgramProperties(); props.setDrawingNo("CP3-1"); props.setProcessNo("A"); props.setProcessEdition("93"); props.setCraftEdition("å·¥èºç次"); props.setProductModel("CP3"); //ç¼å¶ Machine machine = new Machine(); machine.setName("1075"); machine.setProgSendDir("d:\\mdm\\send"); ApproveTableInfo appInfo = new ApproveTableInfo(); appInfo.setTeamLeaderName("ç»é¿1"); appInfo.setProgrammerName("ç¼å¶1"); appInfo.setCheckerName("æ ¡å¯¹1"); appInfo.setSeniorName("å®¡æ ¸1"); Calendar startCal = Calendar.getInstance(); startCal.add(Calendar.DAY_OF_MONTH, -5); appInfo.setProgrammingDate(startCal.getTime()); startCal.add(Calendar.DAY_OF_MONTH, 2); appInfo.setCheckDate(startCal.getTime()); startCal.add(Calendar.DAY_OF_MONTH, 2); appInfo.setApproveDate(startCal.getTime()); s.printPage(document,bfChinese,props,machine); document.close(); s.generateTempPDF(); Assertions.assertTrue(true); } catch (Exception e) { throw new RuntimeException(e); } } }