cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
framework/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
framework/src/main/java/com/yuanchu/limslaboratory/utils/ThreadPoolConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
framework/src/main/java/com/yuanchu/limslaboratory/utils/Threads.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/ClassifyController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/ClassifyMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ClassifyServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
laboratory-server/src/main/resources/mapper/ClassifyMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java
@@ -50,7 +50,7 @@ } /** * * è·åç¨æ·ä¿¡æ¯ * @param token * @return */ framework/pom.xml
@@ -19,7 +19,12 @@ <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons.lang3}</version> </dependency> <!-- mysqlé©±å¨ --> <dependency> <groupId>mysql</groupId> framework/src/main/java/com/yuanchu/limslaboratory/utils/ThreadPoolConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,62 @@ package com.yuanchu.limslaboratory.utils; 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 = 50; // æå¤§å¯å建ççº¿ç¨æ° private int maxPoolSize = 200; // éåæå¤§é¿åº¦ private int queueCapacity = 1000; // çº¿ç¨æ± ç»´æ¤çº¿ç¨æå 许çç©ºé²æ¶é´ 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); } }; } } framework/src/main/java/com/yuanchu/limslaboratory/utils/Threads.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,96 @@ package com.yuanchu.limslaboratory.utils; 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); } } } laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/ClassifyController.java
@@ -36,11 +36,11 @@ public Result<?> addClassifyInformation(@RequestBody Classify classify) { Integer isAddClassifySuccess = classifyService.addClassifyInformation(classify); if (isAddClassifySuccess == 1) { return Result.success("æ·»å åç±»ã"+ classify.getSonName() +"ãæåï¼"); return Result.success("1-$æ·»å åç±»ã"+ classify.getSonName() +"ãæåï¼"); } else if (isAddClassifySuccess == 2) { return Result.fail("æ±æé夿·»å åç±»åç§°ã"+ classify.getSonName() +"ãï¼æ·»å 失败ï¼"); return Result.success("2-$æ±æé夿·»å åç±»åç§°ã"+ classify.getSonName() +"ãï¼æ·»å 失败ï¼"); } return Result.fail("æ·»å åç±»ã"+ classify.getSonName() +"ã失败ï¼"); return Result.success("0-$æ·»å åç±»ã"+ classify.getSonName() +"ã失败ï¼"); } @ApiOperation("å类侧边æ å表ï¼å¦æsonName为空ï¼å带çfather_nameçIdè¿è¡ç¹å»æä½") laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/ClassifyMapper.java
@@ -13,4 +13,6 @@ */ public interface ClassifyMapper extends BaseMapper<Classify> { Classify selectOneByName(Classify classify); } laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ClassifyServiceImpl.java
@@ -1,5 +1,6 @@ package com.yuanchu.limslaboratory.service.impl; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.yuanchu.limslaboratory.pojo.Classify; @@ -29,12 +30,13 @@ @Override public Integer addClassifyInformation(Classify classify) { LambdaQueryWrapper<Classify> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Classify::getFatherName, classify.getFatherName()); wrapper.eq(Classify::getSonName, classify.getSonName()); wrapper.eq(Classify::getState, 1); Classify classify1 = classifyMapper.selectOne(wrapper); //LambdaQueryWrapper<Classify> wrapper = new LambdaQueryWrapper<>(); //wrapper.eq(Classify::getFatherName, classify.getFatherName()); //wrapper.eq(Classify::getSonName, classify.getSonName()); //wrapper.eq(Classify::getState, 1); Classify classify1 = classifyMapper.selectOneByName(classify); if (ObjectUtils.isEmpty(classify1)){ classify.setCreateTime(DateUtil.date()); return classifyMapper.insert(classify); } else { return 2; laboratory-server/src/main/resources/mapper/ClassifyMapper.xml
@@ -2,4 +2,21 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.yuanchu.limslaboratory.mapper.ClassifyMapper"> <select id="selectOneByName" resultType="com.yuanchu.limslaboratory.pojo.Classify"> SELECT id, father_name, son_name, state, create_time, update_time, version FROM classify WHERE state = 1 <if test="fatherName!=null and fatherName!=''"> AND father_name = #{fatherName} </if> <if test="sonName!=null and sonName!=''"> and son_name =#{sonName} </if> </select> </mapper> pom.xml
@@ -37,7 +37,7 @@ <openfeign.version>3.1.3</openfeign.version> <feign-okhttp.version>11.0</feign-okhttp.version> <shiro.version>1.5.3</shiro.version> <commons.lang3>3.12.0</commons.lang3> <!-- æå å导åºçè·¯å¾ --> <package.path>${project.build.directory}/LIMS</package.path> </properties>