From a303cd042ed27bdf2b8daaf3d3bc23f1ef9956af Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期二, 15 八月 2023 17:59:23 +0800
Subject: [PATCH] 设备台账

---
 cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java |    2 
 framework/pom.xml                                                                                        |    7 +
 laboratory-server/src/main/resources/mapper/ClassifyMapper.xml                                           |   17 ++++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/ClassifyMapper.java                    |    2 
 framework/src/main/java/com/yuanchu/limslaboratory/utils/Threads.java                                    |   96 ++++++++++++++++++++++++
 pom.xml                                                                                                  |    2 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/ClassifyController.java            |    6 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ClassifyServiceImpl.java         |   12 +-
 framework/src/main/java/com/yuanchu/limslaboratory/utils/ThreadPoolConfig.java                           |   62 +++++++++++++++
 9 files changed, 195 insertions(+), 11 deletions(-)

diff --git a/cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java
index 57fb932..55da2b0 100644
--- a/cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java
+++ b/cnas-server/src/main/java/com/yuanchu/limslaboratory/service/impl/CnasSatisfactionSurveyServiceImpl.java
@@ -50,7 +50,7 @@
     }
 
     /**
-     *
+     *  鑾峰彇鐢ㄦ埛淇℃伅
      * @param token
      * @return
      */
diff --git a/framework/pom.xml b/framework/pom.xml
index 2aad47d..cfae3f2 100644
--- a/framework/pom.xml
+++ b/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>
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/utils/ThreadPoolConfig.java b/framework/src/main/java/com/yuanchu/limslaboratory/utils/ThreadPoolConfig.java
new file mode 100644
index 0000000..2927710
--- /dev/null
+++ b/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);
+            }
+        };
+    }
+}
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/utils/Threads.java b/framework/src/main/java/com/yuanchu/limslaboratory/utils/Threads.java
new file mode 100644
index 0000000..6ec69b3
--- /dev/null
+++ b/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;
+        }
+    }
+
+    /**
+     * 鍋滄绾跨▼姹�
+     * 鍏堜娇鐢╯hutdown, 鍋滄鎺ユ敹鏂颁换鍔″苟灏濊瘯瀹屾垚鎵�鏈夊凡瀛樺湪浠诲姟.
+     * 濡傛灉瓒呮椂, 鍒欒皟鐢╯hutdownNow, 鍙栨秷鍦╳orkQueue涓璓ending鐨勪换鍔�,骞朵腑鏂墍鏈夐樆濉炲嚱鏁�.
+     * 濡傛灉浠嶄汉瓒呮檪锛屽墖寮峰埗閫�鍑�.
+     * 鍙﹀鍦╯hutdown鏃剁嚎绋嬫湰韬璋冪敤涓柇鍋氫簡澶勭悊.
+     */
+    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);
+        }
+    }
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/ClassifyController.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/ClassifyController.java
index 614814b..b5ae047 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/ClassifyController.java
+++ b/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鐨処d杩涜鐐瑰嚮鎿嶄綔")
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/ClassifyMapper.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/ClassifyMapper.java
index 4d2856c..7d216c5 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/ClassifyMapper.java
+++ b/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);
+
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ClassifyServiceImpl.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ClassifyServiceImpl.java
index 66d8c86..45f2bfb 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ClassifyServiceImpl.java
+++ b/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;
diff --git a/laboratory-server/src/main/resources/mapper/ClassifyMapper.xml b/laboratory-server/src/main/resources/mapper/ClassifyMapper.xml
index f6e5f1c..41552bc 100644
--- a/laboratory-server/src/main/resources/mapper/ClassifyMapper.xml
+++ b/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>
diff --git a/pom.xml b/pom.xml
index c9ca960..bc21e3d 100644
--- a/pom.xml
+++ b/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>

--
Gitblit v1.9.3