mes-basic/src/main/java/com/chinaztt/mes/basic/controller/DivisionController.java
@@ -94,6 +94,7 @@ @PostMapping @PreAuthorize("@pms.hasPermission('basic_division_add')") public R save(@RequestBody Division division) { System.out.println(division); return R.ok(divisionService.save(division)); } /** mes-basic/src/main/java/com/chinaztt/mes/basic/controller/FactoryController.java
@@ -64,6 +64,15 @@ return R.ok(factoryService.getFactoryPage(page, QueryWrapperUtil.gen(factory))); } /** * æ ¹æ®å ¬å¸æ¥è¯¢å·¥å * @param id * @return */ @GetMapping("/byCompanyId") public R getFactoryByCompany(@RequestParam("id") Long id){ return R.ok(factoryService.getByCompanyId(id)); } /** * éè¿idæ¥è¯¢å·¥å mes-basic/src/main/java/com/chinaztt/mes/basic/controller/PartController.java
@@ -17,6 +17,7 @@ package com.chinaztt.mes.basic.controller; import cn.hutool.core.text.csv.CsvReadConfig; import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -24,7 +25,10 @@ import com.chinaztt.mes.basic.entity.Part; import com.chinaztt.mes.basic.excel.PartData; import com.chinaztt.mes.basic.excel.PartUploadListener; import com.chinaztt.mes.basic.mapper.PartMapper; import com.chinaztt.mes.basic.service.PartService; import com.chinaztt.mes.basic.util.DictUtils; import com.chinaztt.mes.basic.util.PartUtils; import com.chinaztt.mes.common.util.JsonUtil; import com.chinaztt.mes.common.wrapper.QueryWrapperUtil; import com.chinaztt.ztt.admin.api.entity.SysDictItem; @@ -37,7 +41,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -62,6 +70,16 @@ private final RemoteDictService remoteDictService; private final RedisTemplate redisTemplate;; private DictUtils dictUtils; private PartUtils partUtils; private PartMapper partMapper; private final static Logger logger = LoggerFactory.getLogger(PartController.class); @Autowired private ThreadPoolTaskExecutor threadPoolTaskExecutor; /** * å页æ¥è¯¢ * @@ -305,4 +323,40 @@ public R getRoutingPartPage(Page page, Part part, Long bomId) { return R.ok(partService.getRoutingPartPage(page, QueryWrapperUtil.gen(part), bomId)); } @PostMapping("/uploadExcel") public R uploadExcel(MultipartFile file) { String key = "syncPart_lock" + SecurityUtils.getUser().getId(); if (redisTemplate.hasKey(key)) { throw new RuntimeException("æå¯¼å ¥ä»»å¡æ£å¨å¤ç"); } partService.asyncUploadExcel(file); return R.ok(); } /** * 设置Csv读æä»¶é ç½® * @return CsvWriteConfig */ public static CsvReadConfig setCsvReadConfig(){ CsvReadConfig csvReadConfig = new CsvReadConfig(); // 设置 ææ¬åéç¬¦ï¼ææ¬å è£ ç¬¦ï¼é»è®¤åå¼å·'"' //csvReadConfig.setTextDelimiter('\t'); // åæ®µåå²ç¬¦å·ï¼é»è®¤ä¸ºéå· csvReadConfig.setFieldSeparator('|'); // 设置注éç¬¦å· // csvReadConfig.setCommentCharacter('#'); // CSVæä»¶æ¯å¦å å«è¡¨å¤´(å ä¸ºè¡¨å¤´ä¸æ¯æ°æ®å 容) csvReadConfig.setContainsHeader(true); // æè 使ç¨å¦ä¸é 置设置表头å¼å§è¡å·ï¼-1L代表æ 表头 // csvReadConfig.setHeaderLineNo(1L); //设置å¼å§çè¡ï¼å æ¬ï¼ï¼é»è®¤0ï¼æ¤å¤ä¸ºåå§æä»¶è¡å· // csvReadConfig.setBeginLineNo(0); // æ¯å¦è·³è¿ç©ºç½è¡ï¼é»è®¤ä¸ºtrue // csvReadConfig.setSkipEmptyRows(true); // 设置æ¯è¡å段个æ°ä¸åæ¶æ¯å¦æåºå¼å¸¸ï¼é»è®¤false // csvReadConfig.setErrorOnDifferentFieldCount(false); return csvReadConfig; } } mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Division.java
@@ -107,5 +107,11 @@ @TableField(exist = false) private String companyName; @TableField(exist = false) private String factoryId; /** * å·¥åå */ @TableField(exist = false) private String factoryName; } mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Part.java
@@ -17,6 +17,7 @@ package com.chinaztt.mes.basic.entity; import cn.hutool.core.annotation.Alias; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModel; @@ -84,37 +85,49 @@ @Unique @ApiModelProperty(value = "é¶ä»¶å·") @NonNull @Alias("é¶ä»¶å·") private String partNo; /** * åç§° */ @ApiModelProperty(value = "åç§°") @Alias("æ£å¨ä½¿ç¨ä¸çé¶ä»¶æè¿°") private String partName; /** * åç§° */ @ApiModelProperty(value = "æ£æµè§åid") private Long testRuleId; /** * é¶ä»¶ç±»å */ @ApiModelProperty(value = "é¶ä»¶ç±»å") private String materialType; /** * åä½ */ @ApiModelProperty(value = "åä½") private String unit; /** * åä½2 */ @ApiModelProperty(value = "åä½2") private String sunit; /** * æè¿° */ @ApiModelProperty(value = "æè¿°") @Alias("é¶ä»¶æè¿°") private String description; /** * é¶ä»¶ç±»å */ @Alias("é¶ä»¶ç±»å") private String materialType; /** * æ£æµè§åid */ @ApiModelProperty(value = "æ£æµè§åid") private Long testRuleId; /** * åä½ */ @Alias("åºå计éåä½") private String unit; /** * åä½2 */ @Alias("éé计éåä½") private String sunit; @Alias("ç°ææ°é") private String totalNum; /** * åå çåç±» ç°å¨æ¹ä¸º ä¸çº§åç±» */ @@ -192,6 +205,7 @@ * Pï¼èæé¶ä»¶è®¡åãæ ééå åæ®µ */ @ApiModelProperty(value = "è®¡åæ¹æ³") @Alias("é¶ä»¶ç¶æ") private String planningMethod; /** * ç¹æ§1 @@ -240,4 +254,60 @@ @ApiModelProperty(value = "æ¯å¦åæææ£") private Integer testRuleType; @Alias("æ¯å¦è®¾å¤å¤ä»¶") private String isEquipment; @Alias("èµäº§ç级") private String assets; @Alias("èµäº§ç±»å«") private String assetsType; @Alias("ç©èµç¶æ") private String suppliesType; @Alias("ABC ç±»") private String abcType; @Alias("é¢ç级å«") private String hz; @Alias("声æå¨æ") private String cycle; @Alias("ä½ç§¯è®¡éåä½") private String volume; @Alias("ç°æè·åæ°é") private String getNum; @Alias("é»è®¤çç©æç³è¯·ä¾åº") private String defaultMr; @Alias("DOP è¿æ¥") private String dopR; @Alias("åé¢äº¤æ") private String netto; @Alias("æ°é计ç®åæ´") private String numCount; @Alias("åºåä¼°ä»·æ¹æ³") private String ivm; @Alias("åºåä»¶ææ¬å±") private String icl; @Alias("ä¾åºåå票äºé¡¹") private String sii; @Alias("é¶ææ¬") private String zc; @Alias("å¤é¨æå¡ææ¬çæ¹æ³") private String esca; } mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Post.java
@@ -44,4 +44,20 @@ */ @ApiModelProperty(value = "夿³¨") private String remark; /** * å ¬å¸ */ private Long company; /** * å·¥å */ private Long factory; /** * é¨é¨ */ private Long division; } mes-basic/src/main/java/com/chinaztt/mes/basic/service/FactoryService.java
@@ -22,7 +22,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.chinaztt.mes.basic.entity.Factory; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -44,4 +43,5 @@ */ IPage<List<Factory>> getFactoryPage(Page page, QueryWrapper<Factory> ew); List<Factory> getByCompanyId(Long id); } mes-basic/src/main/java/com/chinaztt/mes/basic/service/PartService.java
@@ -25,6 +25,7 @@ import com.chinaztt.mes.basic.entity.Part; import com.chinaztt.mes.basic.excel.PartData; import com.chinaztt.ztt.common.core.util.R; import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -131,4 +132,6 @@ void syncPart(); Long syncNewIfs(String date); void asyncUploadExcel(MultipartFile file); } mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/FactoryServiceImpl.java
@@ -23,9 +23,7 @@ import com.chinaztt.mes.basic.entity.Factory; import com.chinaztt.mes.basic.mapper.FactoryMapper; import com.chinaztt.mes.basic.service.FactoryService; import com.chinaztt.ztt.common.data.datascope.DataScope; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -54,4 +52,12 @@ public IPage<List<Factory>> getFactoryPage(Page page, QueryWrapper<Factory> ew) { return baseMapper.getFactoryPage(page,ew); } @Override public List<Factory> getByCompanyId(Long id) { System.out.println(id); QueryWrapper<Factory> wrapper = new QueryWrapper<>(); wrapper.lambda().eq(Factory::getCompanyId,id); return baseMapper.selectList(wrapper); } } mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java
@@ -17,6 +17,12 @@ package com.chinaztt.mes.basic.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Console; import cn.hutool.core.text.csv.CsvData; import cn.hutool.core.text.csv.CsvReader; import cn.hutool.core.text.csv.CsvRow; import cn.hutool.core.text.csv.CsvUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -34,9 +40,11 @@ import com.chinaztt.mes.basic.util.PartUtils; import com.chinaztt.mes.basic.util.TransactionUtils; import com.chinaztt.mes.common.util.JsonUtil; import com.chinaztt.mes.common.util.MultipartFileToFile; import com.chinaztt.ztt.common.core.util.R; import com.chinaztt.ztt.common.security.util.SecurityUtils; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Lists; import com.google.gson.Gson; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -49,21 +57,25 @@ import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.util.EntityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.core.env.Environment; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.sql.Connection; import java.sql.PreparedStatement; import java.util.*; import java.util.concurrent.CompletableFuture; /** * é¶ä»¶ @@ -82,6 +94,9 @@ private Environment environment; private RedisTemplate redisTemplate; private TransactionUtils transactionUtils; @Autowired private ThreadPoolTaskExecutor threadPoolTaskExecutor; ; @@ -378,7 +393,6 @@ @Override @Transactional(rollbackFor = Exception.class) public Long syncNewIfs(String date) { TransactionStatus transaction = transactionUtils.begin(TransactionDefinition.ISOLATION_READ_COMMITTED); Map<String, String> dicmattype = dictUtils.getDicKey("material_type"); Map<String, String> dicunit = dictUtils.getDicKey("unit"); String key = "syncPart_lock" + SecurityUtils.getUser().getId(); @@ -449,4 +463,124 @@ } return (long) partList.size(); } @Override public void asyncUploadExcel(MultipartFile file) { String key = "syncPart_lock" + SecurityUtils.getUser().getId(); if (redisTemplate.hasKey(key)) { throw new RuntimeException("æå¯¼å ¥ä»»å¡æ£å¨å¤ç"); } redisTemplate.opsForValue().set(key, 1, 1000 * 3600); RequestContextHolder.setRequestAttributes(RequestContextHolder.getRequestAttributes(),true); Map<String, String> dicmattype = dictUtils.getDicKey("material_type"); Map<String, String> dicunit = dictUtils.getDicKey("unit"); CompletableFuture.runAsync(()->{ asyncExcel(file,dicmattype,dicunit); redisTemplate.delete(key); },threadPoolTaskExecutor); } public void asyncExcel(MultipartFile file,Map<String, String> dicmattype,Map<String, String> dicunit){ File file1 = MultipartFileToFile.multipartFileToFile(file); CsvReader reader = CsvUtil.getReader(); reader.setFieldSeparator(','); //仿件ä¸è¯»åCSVæ°æ® CsvData data = reader.read(file1, CharsetUtil.CHARSET_GBK); List<CsvRow> rows = data.getRows(); //éåè¡ List<Part>list = new ArrayList<>(); List<String>no=new ArrayList<String>(); for (CsvRow csvRow : rows) { //getRawListè¿åä¸ä¸ªListå表ï¼åè¡¨çæ¯ä¸é¡¹ä¸ºCSVä¸çä¸ä¸ªåå æ ¼ï¼æ¢éå·åéé¨åï¼ List<String> rawList = filter(csvRow.getRawList()); //System.out.println(rawList); if(rawList.get(0).equals("æ¯å¦è®¾å¤å¤ä»¶")){ continue; } if(rawList.get(1).equals("88.118.1/A0172320")){ Console.log(rawList); for (int i = 0; i < rawList.size(); i++) { System.out.println(i+"====="+rawList.get(i)); } Console.log(rawList.get(6)); } Part part = new Part(); part.setIsEquipment(rawList.get(0)); part.setPartNo(rawList.get(1)); no.add(rawList.get(1)); part.setPartName(rawList.get(2)); part.setDescription(rawList.get(3)); part.setMaterialType(rawList.get(6)); part.setUnit(rawList.get(8)); part.setAssets(rawList.get(16)); part.setAssetsType(rawList.get(17)); part.setPlanningMethod(rawList.get(18)); part.setSuppliesType(rawList.get(19)); part.setAbcType(rawList.get(20)); part.setHz(rawList.get(21)); part.setCycle(rawList.get(22)); part.setSunit(rawList.get(33)); part.setVolume(rawList.get(35)); part.setTotalNum(rawList.get(36)); part.setGetNum(rawList.get(37)); part.setDefaultMr(rawList.get(60)); part.setDopR(rawList.get(61)); part.setNetto(rawList.get(62)); part.setNumCount(rawList.get(64)); part.setIvm(rawList.get(66)); part.setIcl(rawList.get(67)); part.setSii(rawList.get(68)); part.setZc(rawList.get(69)); part.setEsca(rawList.get(72)); list.add(part); } list.forEach(r->{ r.setEngChgLevel("1"); no.add(r.getPartNo()); r.setMaterialType(dicmattype.get(r.getMaterialType())); r.setUnit(dicunit.get(r.getUnit())); r.setSunit(dicunit.get(r.getSunit())); }); list.stream().filter(r-> Objects.isNull(r.getMaterialType())).forEach(System.out::println); if(list.size()>0) { List<List<String>> partition = Lists.partition(no, 10000); partition.forEach(l->{ QueryWrapper<Part> queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().select(Part::getPartNo).in(Part::getPartNo, l); List<Part> selectList = baseMapper.selectList(queryWrapper); list.removeIf(mainObj -> selectList.stream().anyMatch(subObj -> subObj.getPartNo().equals(mainObj.getPartNo()))); }); log.info("è¿æ»¤åé¿åº¦=============================ã"+list.size()); list.forEach(l->{ try { baseMapper.insert(l); }catch (Exception e) { e.printStackTrace(); } }); } MultipartFileToFile.delteTempFile(file1); } /** * è¿æ»¤ä¿®æ¹ä¸æ£ç¡®æ°æ®æ ¼å¼ * @param rawList * @return */ public static List<String> filter( List<String> rawList){ List<String>filters = new ArrayList<>(); for (int i = 0; i < rawList.size(); i++) { if (rawList.get(i).contains("|")&&rawList.get(i).contains(",")&&rawList.get(i).split(",").length>1) { String[] split = rawList.get(i).split(","); if (!Objects.equals(split[1], "") &&split[0].charAt(0)==split[1].charAt(0)){ Arrays.stream(split).forEach(filters::add); }else { filters.add(rawList.get(i)); } }else { filters.add(rawList.get(i)); } } return filters; } } mes-common/src/main/java/com/chinaztt/mes/common/config/FeignInterceptor.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.chinaztt.mes.common.config; import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; /** * @Author å¼ å®¾ * @Date 2023/10/31 */ @Component public class FeignInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate template) { RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); if(requestAttributes != null){ HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); String authorization = request.getHeader("Authorization"); template.header("Authorization", authorization); } } } mes-common/src/main/java/com/chinaztt/mes/common/util/MultipartFileToFile.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,65 @@ package com.chinaztt.mes.common.util; import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.util.Objects; /** * @Author å¼ å®¾ * @Date 2022/8/5 */ public class MultipartFileToFile { /** * MultipartFile 转 File * * @param file * @throws Exception */ public static File multipartFileToFile(MultipartFile file) { File toFile = null; try { if ("".equals(file) || file.getSize() <= 0) { file = null; } else { InputStream ins = null; ins = file.getInputStream(); toFile = new File(Objects.requireNonNull(file.getOriginalFilename())); inputStreamToFile(ins, toFile); ins.close(); } }catch (IOException e){ e.printStackTrace(); } return toFile; } //è·åæµæä»¶ private static void inputStreamToFile(InputStream ins, File file) { try { OutputStream os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); ins.close(); } catch (Exception e) { e.printStackTrace(); } } /** * å 餿¬å°ä¸´æ¶æä»¶ * @param file */ public static void delteTempFile(File file) { if (file != null) { File del = new File(file.toURI()); del.deleteOnExit(); } } } mes-common/src/main/java/com/chinaztt/mes/common/util/ThreadPoolConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,62 @@ package com.chinaztt.mes.common.util; import org.apache.commons.lang3.concurrent.BasicThreadFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor; /** * çº¿ç¨æ± é ç½® * * @author å¼ å®¾ **/ @Configuration public class ThreadPoolConfig { // æ ¸å¿çº¿ç¨æ± å¤§å° private int corePoolSize = 80; // æå¤§å¯å建ççº¿ç¨æ° private int maxPoolSize = 92; // éåæå¤§é¿åº¦ private int queueCapacity = 80; // çº¿ç¨æ± ç»´æ¤çº¿ç¨æå 许çç©ºé²æ¶é´ private int keepAliveSeconds = 300; @Bean(name = "threadPoolTaskExecutor") public ThreadPoolTaskExecutor threadPoolTaskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setMaxPoolSize(maxPoolSize); executor.setCorePoolSize(corePoolSize); executor.setQueueCapacity(queueCapacity); executor.setKeepAliveSeconds(keepAliveSeconds); // çº¿ç¨æ± 对æç»ä»»å¡(æ 线ç¨å¯ç¨)çå¤ççç¥ executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); return executor; } /** * æ§è¡å¨ææ§æå®æ¶ä»»å¡ */ @Bean(name = "scheduledExecutorService") protected ScheduledExecutorService scheduledExecutorService() { return new ScheduledThreadPoolExecutor(corePoolSize, new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()) { @Override protected void afterExecute(Runnable r, Throwable t) { super.afterExecute(r, t); Threads.printException(r, t); } }; } } mes-common/src/main/java/com/chinaztt/mes/common/util/Threads.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,96 @@ package com.chinaztt.mes.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.concurrent.*; /** * 线ç¨ç¸å ³å·¥å ·ç±». * * @author å¼ å®¾ */ public class Threads { private static final Logger logger = LoggerFactory.getLogger(Threads.class); /** * sleepçå¾ ,åä½ä¸ºæ¯«ç§ */ public static void sleep(long milliseconds) { try { Thread.sleep(milliseconds); } catch (InterruptedException e) { return; } } /** * åæ¢çº¿ç¨æ± * å 使ç¨shutdown, åæ¢æ¥æ¶æ°ä»»å¡å¹¶å°è¯å®æææå·²åå¨ä»»å¡. * å¦æè¶ æ¶, åè°ç¨shutdownNow, åæ¶å¨workQueueä¸Pendingçä»»å¡,并䏿ææé»å¡å½æ°. * 妿ä»äººè¶ æï¼åå¼·å¶éåº. * å¦å¯¹å¨shutdownæ¶çº¿ç¨æ¬èº«è¢«è°ç¨ä¸æåäºå¤ç. */ public static void shutdownAndAwaitTermination(ExecutorService pool) { if (pool != null && !pool.isShutdown()) { pool.shutdown(); try { if (!pool.awaitTermination(120, TimeUnit.SECONDS)) { pool.shutdownNow(); if (!pool.awaitTermination(120, TimeUnit.SECONDS)) { logger.info("Pool did not terminate"); } } } catch (InterruptedException ie) { pool.shutdownNow(); Thread.currentThread().interrupt(); } } } /** * æå°çº¿ç¨å¼å¸¸ä¿¡æ¯ */ public static void printException(Runnable r, Throwable t) { if (t == null && r instanceof Future<?>) { try { Future<?> future = (Future<?>) r; if (future.isDone()) { future.get(); } } catch (CancellationException ce) { t = ce; } catch (ExecutionException ee) { t = ee.getCause(); } catch (InterruptedException ie) { Thread.currentThread().interrupt(); } } if (t != null) { logger.error(t.getMessage(), t); } } } mes-web/src/main/resources/bootstrap.yml
@@ -1,5 +1,5 @@ server: port: 6060 port: 6066 spring: datasource: @@ -17,7 +17,7 @@ # password: nacos password: zttZTT123! discovery: server-addr: 127.0.0.1:8848 server-addr: 106.13.194.57:8848 metadata: # VERSION: 10.88.15.224 VERSION: 127.0.0.1