package com.highdatas.mdm.util; import com.highdatas.mdm.process.canvas.ProcessDiagramGenerator; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; import org.activiti.bpmn.model.BpmnModel; import org.activiti.engine.ProcessEngineConfiguration; import org.activiti.engine.RepositoryService; import org.activiti.engine.repository.ProcessDefinition; import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; public class WorkflowUtils { public static void main(String[] args) { System.out.println(toFirstChar("汉字转换为拼音").toUpperCase()); //转为首字母大写 //System.out.println(toPinyin("汉字转换为拼音")); } private static Logger logger = LoggerFactory.getLogger(WorkflowUtils.class); /** * 转换流程节点类型为中文说明 * * @param type 英文名称 * @return 翻译后的中文名称 */ public static String parseToZhType(String type) { Map types = new HashMap(); types.put("userTask", "用户任务"); types.put("serviceTask", "系统任务"); types.put("startEvent", "开始节点"); types.put("endEvent", "结束节点"); types.put("exclusiveGateway", "条件判断节点(系统自动根据条件处理)"); types.put("inclusiveGateway", "并行处理任务"); types.put("callActivity", "子流程"); return types.get(type) == null ? type : types.get(type); } /** * 导出图片文件到硬盘 * * @return 文件的全路径 */ public static String exportDiagramToFile(RepositoryService repositoryService, ProcessDefinition processDefinition, String exportDir) throws IOException { // String diagramResourceName = processDefinition.getDiagramResourceName(); // String key = processDefinition.getKey(); // int version = processDefinition.getVersion(); String diagramPath = exportDir; BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId()); ProcessEngineConfiguration engineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); ProcessDiagramGenerator diagramGenerator = new ProcessDiagramGenerator(); InputStream resourceAsStream = diagramGenerator.generateDiagram(bpmnModel, "png", "WenQuanYi Micro Hei", "WenQuanYi Micro Hei",null, null,0); byte[] b = new byte[resourceAsStream.available()]; resourceAsStream.read(b, 0, b.length); // create file if not exist // String diagramDir = exportDir + "/" + key + "/" + version; // File diagramDirFile = new File(diagramDir); // if (!diagramDirFile.exists()) { // diagramDirFile.mkdirs(); // } // diagramPath = exportDir + "/" +11 +".png"; File file = new File(diagramPath); if (file.exists()) { logger.debug("diagram exist, ignore... : {}", diagramPath); return diagramPath; } else { File parentFile = file.getParentFile(); if (!parentFile.exists()) { parentFile.createNewFile(); } file.createNewFile(); } logger.debug("export diagram to : {}", diagramPath); // wirte bytes to file FileUtils.writeByteArrayToFile(file, b); return diagramPath; } /** * 获取字符串拼音的第一个字母 * @param chinese * @return */ public static String toFirstChar(String chinese){ String pinyinStr = ""; char[] newChar = chinese.toCharArray(); //转为单个字符 HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); for (int i = 0; i < newChar.length; i++) { if (newChar[i] > 128) { try { pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0].charAt(0); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } }else{ pinyinStr += newChar[i]; } } return pinyinStr; } /** * 汉字转为拼音 * @param chinese * @return */ public static String toPinyin(String chinese){ String pinyinStr = ""; char[] newChar = chinese.toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); for (int i = 0; i < newChar.length; i++) { if (newChar[i] > 128) { try { pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0]; } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } }else{ pinyinStr += newChar[i]; } } return pinyinStr; } }