14 changed files with 707 additions and 185 deletions
			
			
		@ -0,0 +1,58 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.ticket.twoTicket.constant; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 定义ticket常量 | 
				
			||||||
 | 
					 * @Author WL | 
				
			||||||
 | 
					 * @Version v1.0 | 
				
			||||||
 | 
					 * @Serial 1.0 | 
				
			||||||
 | 
					 * @Date 2023/6/2 13:48 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public class TicketConstant { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * window操作系统工作票访问路径 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static final String TICKET_WINDOW_PATH = "hzims-service/ticket/src/main/resources/template"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * Liunx操作系统工作票访问路径 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static final String TICKET_LIUNX_PATH = "/data/hzims/ticket/word/template/ticket"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * window操作系统工作票合并输出路径 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static final String TICKET_WINDOW_MERGE_PATH = "D:\\导出excel\\"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * liunx操作系统工作票合并输出路径 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static final String TICKET_LIUNX_MERGE_PATH = "/data/hzims/ticket/word/template/ticket/ouput/"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * os.name | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static final String OS_NAME = System.getProperty("os.name"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 安全隔离措施附页 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static final String SECURE_PAGE = "/secondary/工作票安全措施附页.docx"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 危险点分析与预控措施票 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static final String SAFETY_PAGE = "/secondary/工作票危险点分析及控制措施票.docx"; | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 动火工作票 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static final String FLIGHT_PAGE = "/secondary/动火工作票.docx"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 有限空间监测记录单 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static final String SPACE_PAGE = "/secondary/有限空间监测记录单.docx"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,229 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.ticket.twoTicket.utils; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | 
				
			||||||
 | 
					import lombok.AllArgsConstructor; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					import org.apache.commons.lang3.StringUtils; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.*; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @Author WL | 
				
			||||||
 | 
					 * @Version v1.0 | 
				
			||||||
 | 
					 * @Serial 1.0 | 
				
			||||||
 | 
					 * @Date 2023/6/2 14:27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public class WordHelper extends StringUtils { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * Object转 toString | 
				
			||||||
 | 
					     * | 
				
			||||||
 | 
					     * @param object | 
				
			||||||
 | 
					     * @return | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static String toString(Object object) { | 
				
			||||||
 | 
					        return object == null ? null : object.toString().trim(); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * Map ===》 string | 
				
			||||||
 | 
					     * | 
				
			||||||
 | 
					     * @param result map | 
				
			||||||
 | 
					     * @param key    值 | 
				
			||||||
 | 
					     * @param count  存在多少空格 | 
				
			||||||
 | 
					     * @return | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static String toMapAsString(Map<String, Object> result, String key, int count) { | 
				
			||||||
 | 
					        String signerName = WordHelper.toString(result.get(key)); | 
				
			||||||
 | 
					        return isNotBlank(signerName) ? signerName : "\u00A0" + printSpace(count); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 存入map | 
				
			||||||
 | 
					     * | 
				
			||||||
 | 
					     * @param result map | 
				
			||||||
 | 
					     * @param key    值 | 
				
			||||||
 | 
					     * @param count  存在多少空格 | 
				
			||||||
 | 
					     * @return | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static void putMap(Map<String, Object> result, String key, int count) { | 
				
			||||||
 | 
					        result.put(key, "\u00A0" + printSpace(count)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 判断map是否为空 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static boolean isBlank(Map<String, Object> result, String key) { | 
				
			||||||
 | 
					        String value = WordHelper.toString(result.get(key)); | 
				
			||||||
 | 
					        if (StringUtils.isBlank(value)) { | 
				
			||||||
 | 
					            return true; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return false; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 判断map不为为空 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static boolean isNoneBlank(Map<String, Object> result, String key) { | 
				
			||||||
 | 
					        String value = WordHelper.toString(result.get(key)).trim(); | 
				
			||||||
 | 
					        System.out.println(value.length()); | 
				
			||||||
 | 
					        if (StringUtils.isNoneBlank(value)) { | 
				
			||||||
 | 
					            return true; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return false; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 打印多少空格 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static String printSpace(int count) { | 
				
			||||||
 | 
					        StringBuilder sb = new StringBuilder(); | 
				
			||||||
 | 
					        for (int i = 0; i < count; i++) { | 
				
			||||||
 | 
					            sb.append("  "); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return sb.toString(); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * map验证是value否为null | 
				
			||||||
 | 
					     * | 
				
			||||||
 | 
					     * @param params | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static Map<String, Object> resultMap(Map<String, Object> params) { | 
				
			||||||
 | 
					        //创建新的Map
 | 
				
			||||||
 | 
					        Map<String, Object> result = new HashMap<>(); | 
				
			||||||
 | 
					        isContainsKey(params,result); | 
				
			||||||
 | 
					        //遍历
 | 
				
			||||||
 | 
					        Set<Map.Entry<String, Object>> entries = params.entrySet(); | 
				
			||||||
 | 
					        for (Map.Entry<String, Object> entry : entries) { | 
				
			||||||
 | 
					            listEntryMap(result, entry.getKey(), entry.getValue()); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return result; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 包含移除 | 
				
			||||||
 | 
					     * @param params | 
				
			||||||
 | 
					     * @param result | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    private static void isContainsKey(Map<String, Object> params, Map<String, Object> result) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (params.containsKey("principalName1")) { | 
				
			||||||
 | 
					            result.put("principalName1", params.get("principalName1")); | 
				
			||||||
 | 
					            params.remove("principalName1"); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (params.containsKey("signerName2")) { | 
				
			||||||
 | 
					            result.put("signerName2", params.get("signerName2")); | 
				
			||||||
 | 
					            params.remove("signerName2"); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (params.containsKey("licensorName1")) { | 
				
			||||||
 | 
					            result.put("licensorName1", params.get("licensorName1")); | 
				
			||||||
 | 
					            params.remove("licensorName1"); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (params.containsKey("principalName2")) { | 
				
			||||||
 | 
					            result.put("principalName2", params.get("principalName2")); | 
				
			||||||
 | 
					            params.remove("principalName2"); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (params.containsKey("principalName3")) { | 
				
			||||||
 | 
					            result.put("principalName3", params.get("principalName3")); | 
				
			||||||
 | 
					            params.remove("principalName3"); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (params.containsKey("licensorName2")) { | 
				
			||||||
 | 
					            result.put("licensorName2", params.get("licensorName2")); | 
				
			||||||
 | 
					            params.remove("licensorName2"); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static void listEntryMap(Map<String, Object> result, String key, Object value) { | 
				
			||||||
 | 
					        List<Entry> params = new ArrayList<>(); | 
				
			||||||
 | 
					        paramsList(params); | 
				
			||||||
 | 
					        for (Entry entry : params) { | 
				
			||||||
 | 
					            isEntryMap(result, entry.getFileName(), key, value, entry.getCount()); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Data | 
				
			||||||
 | 
					    @AllArgsConstructor | 
				
			||||||
 | 
					    static class Entry { | 
				
			||||||
 | 
					        /** | 
				
			||||||
 | 
					         * key值 | 
				
			||||||
 | 
					         */ | 
				
			||||||
 | 
					        private String fileName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /** | 
				
			||||||
 | 
					         * count | 
				
			||||||
 | 
					         */ | 
				
			||||||
 | 
					        private Integer count; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 存储list | 
				
			||||||
 | 
					     * | 
				
			||||||
 | 
					     * @param params | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    private static void paramsList(List<Entry> params) { | 
				
			||||||
 | 
					        params.add(new Entry("initialPrincipalName", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("principalChangeTime", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("principalName", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("jobReceiver", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("jobReceiverTime", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("watchPrincipalEndTime", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("licenseTime", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("signerDateTime", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("classGroupName", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("code", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("signerName", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("watchPrincipalName", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("projectName", 10)); | 
				
			||||||
 | 
					        params.add(new Entry("groundNum", 5)); | 
				
			||||||
 | 
					        params.add(new Entry("dismantleNum", 5)); | 
				
			||||||
 | 
					        params.add(new Entry("retainNum", 5)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 验证map是否为空 | 
				
			||||||
 | 
					     * | 
				
			||||||
 | 
					     * @param result | 
				
			||||||
 | 
					     * @param fieldName | 
				
			||||||
 | 
					     * @param key | 
				
			||||||
 | 
					     * @param value | 
				
			||||||
 | 
					     * @param count | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static void isEntryMap(Map<String, Object> result, String fieldName, String key, Object value, int count) { | 
				
			||||||
 | 
					        if (fieldName.equals(key)) { | 
				
			||||||
 | 
					            // Object newValue = Optional.ofNullable(value).orElse("\u00A0" + printSpace(count));
 | 
				
			||||||
 | 
					            Object newValue = StringUtils.isNoneBlank(toString(value).trim()) ? value : "\u00A0" + printSpace(count); | 
				
			||||||
 | 
					            result.put(key, newValue); | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            Object newValue =  StringUtils.isNoneBlank(toString(value).trim()) ? value : "\u00A0"; | 
				
			||||||
 | 
					            result.put(key, newValue); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,120 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.ticket.twoTicket.utils; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList; | 
				
			||||||
 | 
					import java.util.HashMap; | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					import java.util.Map; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @Author WL | 
				
			||||||
 | 
					 * @Version v1.0 | 
				
			||||||
 | 
					 * @Serial 1.0 | 
				
			||||||
 | 
					 * @Date 2023/6/2 7:39 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public class WordMapUtils { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * word 表格转换 | 
				
			||||||
 | 
					     * | 
				
			||||||
 | 
					     * @param key     key值 | 
				
			||||||
 | 
					     * @param result  存入数据 | 
				
			||||||
 | 
					     * @param isIndex 是否需要索引 | 
				
			||||||
 | 
					     * @param size    word最多的表格数据 | 
				
			||||||
 | 
					     * @param keys    多个key值 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static void newMapWithList(String key, Map<String, Object> result | 
				
			||||||
 | 
					            , boolean isIndex, int size, String... keys) { | 
				
			||||||
 | 
					        List<Map<String, Object>> list = (List<Map<String, Object>>) result.get(key); | 
				
			||||||
 | 
					        if (CollectionUtils.isEmpty(list)) { | 
				
			||||||
 | 
					            List<Map<String, Object>> newMatterLibraryListTHREE = new ArrayList<>(); | 
				
			||||||
 | 
					            for (int i = 1; i <= size; i++) { | 
				
			||||||
 | 
					                Map<String, Object> map = new HashMap<>(); | 
				
			||||||
 | 
					                //是否需要索引
 | 
				
			||||||
 | 
					                if (isIndex) { | 
				
			||||||
 | 
					                    map.put("index", i); | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					                // 是否有keys
 | 
				
			||||||
 | 
					                if (keys != null) { | 
				
			||||||
 | 
					                    for (String value : keys) { | 
				
			||||||
 | 
					                        map.put(value, ""); | 
				
			||||||
 | 
					                    } | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					                newMatterLibraryListTHREE.add(map); | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					            result.put(key, | 
				
			||||||
 | 
					                    newMatterLibraryListTHREE); | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            int tempSize = list.size(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            List<Map<String, Object>> newList = new ArrayList<>(); | 
				
			||||||
 | 
					            if (size > tempSize) { | 
				
			||||||
 | 
					                int sizeLimit = 1; | 
				
			||||||
 | 
					                int tempIndex = 1; | 
				
			||||||
 | 
					                for (int i = 0; i < size; i++) { | 
				
			||||||
 | 
					                    Map<String, Object> map = new HashMap<>(); | 
				
			||||||
 | 
					                    if (tempSize >= sizeLimit) { | 
				
			||||||
 | 
					                        Map<String, Object> stringObjectMap = list.get(i); | 
				
			||||||
 | 
					                        // map.putAll(stringObjectMap);
 | 
				
			||||||
 | 
					                        newList.add(stringObjectMap); | 
				
			||||||
 | 
					                        tempIndex++; | 
				
			||||||
 | 
					                        sizeLimit++; | 
				
			||||||
 | 
					                    }else { | 
				
			||||||
 | 
					                        //是否需要索引
 | 
				
			||||||
 | 
					                        if (isIndex) { | 
				
			||||||
 | 
					                            map.put("index", tempIndex); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        } | 
				
			||||||
 | 
					                        // 是否有keys
 | 
				
			||||||
 | 
					                        if (keys != null) { | 
				
			||||||
 | 
					                            for (String value : keys) { | 
				
			||||||
 | 
					                                map.put(value, ""); | 
				
			||||||
 | 
					                            } | 
				
			||||||
 | 
					                        } | 
				
			||||||
 | 
					                        tempIndex++; | 
				
			||||||
 | 
					                        newList.add(map); | 
				
			||||||
 | 
					                    } | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					            } else { | 
				
			||||||
 | 
					                for (int i = 0; i < tempSize; i++) { | 
				
			||||||
 | 
					                    Map<String, Object> map = list.get(i); | 
				
			||||||
 | 
					                    if (isIndex) { | 
				
			||||||
 | 
					                        map.put("index", i + 1); | 
				
			||||||
 | 
					                    } | 
				
			||||||
 | 
					                    newList.add(map); | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					            result.put(key, newList); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 通过状态获取是第几种工作票 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public static String getWorkTicketStatus(Integer status) { | 
				
			||||||
 | 
					        String pathName = null; | 
				
			||||||
 | 
					        switch (status) { | 
				
			||||||
 | 
					            case 1: | 
				
			||||||
 | 
					                pathName = "电气第一种工作票模版.docx"; | 
				
			||||||
 | 
					                break; | 
				
			||||||
 | 
					            case 2: | 
				
			||||||
 | 
					                pathName = "电气第二种工作票模版.docx"; | 
				
			||||||
 | 
					                break; | 
				
			||||||
 | 
					            case 3: | 
				
			||||||
 | 
					                pathName = "水力机械工作票模版.docx"; | 
				
			||||||
 | 
					                break; | 
				
			||||||
 | 
					            default: | 
				
			||||||
 | 
					                pathName = "电气第一种工作票模版.docx"; | 
				
			||||||
 | 
					                break; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return pathName; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
									
										Binary file not shown.
									
								
							
						
									
										Binary file not shown.
									
								
							
						
									
										Binary file not shown.
									
								
							
						
									
										Binary file not shown.
									
								
							
						
					Loading…
					
					
				
		Reference in new issue