Преглед на файлове

Merge remote-tracking branch 'origin/V0.0.2' into V0.0.2

luowei преди 2 години
родител
ревизия
cc62563cd3

+ 2 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/dto/CoreEduTrainingTaskEditDto.java

@@ -5,9 +5,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingTaskToUser;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.hibernate.validator.constraints.Length;
 
-import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 import java.util.List;
@@ -52,6 +50,8 @@ public class CoreEduTrainingTaskEditDto {
     @ApiModelProperty(value = "提交类型", notes = "1:暂存,2:提交")
     private Integer submitType;
 
+    private List<String> fileList;
+
     //@NotEmpty(message = "参与人员不能为空")
     @ApiModelProperty(value = "任务用户信息", notes = "1:参与人员,2:缺席人员")
     private List<CoreEduTrainingTaskToUser> taskUserList;

+ 18 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/thread/SocThreadFactory.java

@@ -0,0 +1,18 @@
+package com.xunmei.common.core.thread;
+
+import lombok.AllArgsConstructor;
+
+import java.util.concurrent.ThreadFactory;
+
+@AllArgsConstructor
+public class SocThreadFactory implements ThreadFactory {
+
+    private ThreadFactory original;
+
+    @Override
+    public Thread newThread(Runnable r) {
+        Thread thread = original.newThread(r);
+        thread.setUncaughtExceptionHandler(new SocUncaughtExceptionHandler());//异常捕获
+        return thread;
+    }
+}

+ 11 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/thread/SocUncaughtExceptionHandler.java

@@ -0,0 +1,11 @@
+package com.xunmei.common.core.thread;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class SocUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
+    @Override
+    public void uncaughtException(Thread t, Throwable e) {
+        log.error("线程异常信息:{}", e.getMessage(), e);
+    }
+}

+ 43 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/thread/ThreadPoolConfig.java

@@ -0,0 +1,43 @@
+package com.xunmei.common.core.thread;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.scheduling.annotation.AsyncConfigurer;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+@Configuration
+@EnableAsync
+public class ThreadPoolConfig implements AsyncConfigurer {
+    /**
+     * 项目共用线程池
+     */
+    public static final String SOC_EXECUTOR = "socExecutor";
+
+
+    @Override
+    public Executor getAsyncExecutor() {
+        return socExecutor();
+    }
+
+    @Bean(SOC_EXECUTOR)
+    @Primary
+    public ThreadPoolTaskExecutor socExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        //优雅停机
+        executor.setWaitForTasksToCompleteOnShutdown(true);
+        executor.setCorePoolSize(10);
+        executor.setMaxPoolSize(10);
+        executor.setQueueCapacity(200);
+        executor.setThreadNamePrefix("soc-executor-");
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//满了调用线程执行,认为重要任务
+        //装饰器,用于异步线程内捕获异常
+        executor.setThreadFactory(new SocThreadFactory(executor));
+        executor.initialize();
+        return executor;
+    }
+}

+ 5 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -5,7 +5,6 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSON;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -30,7 +29,6 @@ import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.enums.ExportPdfType;
 import com.xunmei.common.core.enums.edu.EduTrainingDoStatus;
-import com.xunmei.common.core.enums.edu.EduTrainingType;
 import com.xunmei.common.core.exception.SystemException;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.web.domain.AjaxResult;
@@ -63,7 +61,6 @@ import java.text.NumberFormat;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 
 /**
@@ -232,6 +229,11 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         coreEduTrainingTask.setNote(request.getNote());
         coreEduTrainingTask.setRecorderId(SecurityUtils.getUserId());
         coreEduTrainingTask.setImageList(request.getImageList());
+        if (ObjectUtil.isNotEmpty(request.getFileList())){
+            coreEduTrainingTask.setFileList(JSON.toJSONString(request.getFileList()));
+        }else {
+            coreEduTrainingTask.setFileList(null);
+        }
         List<SysUser> userList = RemoteCallHandlerExecutor.executeRemoteCall(() ->
                 roleService.selectUserByRoleNameAndOrgId("网点负责人", coreEduTrainingTask.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_USER_DATA_ERROR);
         if (ObjectUtil.isNotEmpty(userList)) {

+ 30 - 3
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillPlanMapper.xml

@@ -464,6 +464,7 @@
           and p1.plan_status = 0
           and r1.role_id = #{request.planRoleId}
     </sql>
+
     <select id="selectPageData" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillPlanPageVo">
         select
         p.id as id,
@@ -483,6 +484,32 @@
         p.parent_id as parentId
 
         from core_drill_plan p left join sys_user u on p.update_by=u.id
+        where p.deleted = 0
+        <if test="request.planRoleId!=null">
+            and p.id in (<include refid="pageRoleIncludeReuqest"/>)
+        </if>
+        <include refid="pageIncludeP"/>
+        order by p.create_time desc
+    </select>
+    <!--<select id="selectPageData" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillPlanPageVo">
+        select
+        p.id as id,
+        p.plan_name as planName,
+        p.create_org_id as createOrgId,
+        p.create_org_name as createOrgName,
+        p.exec_org_type as execOrgType,
+        p.plan_cycle as planCycle,
+        p.exec_times as execTimes,
+        p.remark as remark,
+        u.name as updateBy,
+        p.plan_status as planStatus,
+        p.issue as issue,
+        p.standard as standard,
+        p.belong_org_id as belongOrgId,
+        p.belong_org_name as belongOrgName,
+        p.parent_id as parentId
+
+        from core_drill_plan p left join sys_user u on p.update_by=u.id
         where p.deleted = 0 and p.parent_id is null
         and p.standard=1 and p.issue=1
         <if test="request.planRoleId!=null">
@@ -490,13 +517,13 @@
         </if>
         and p.id in ( select sp.parent_id from core_drill_plan sp where sp.deleted = 0 and sp.parent_id is not
         null<include refid="pageIncludeSP"/>)
-        <!-- 不是标准计划但是也没下发: 行社自建的计划 -->
+        &lt;!&ndash; 不是标准计划但是也没下发: 行社自建的计划 &ndash;&gt;
         or ( p.standard=0 and p.issue=0 and p.deleted=0 and p.parent_id is null
         <if test="request.planRoleId!=null">
             and p.id in (<include refid="pageRoleIncludeReuqest"/>)
         </if>
         <include refid="pageIncludeP"/>)
-        <!-- 是标准计划但是未下发 -->
+        &lt;!&ndash; 是标准计划但是未下发 &ndash;&gt;
         or ( p.standard=1 and p.issue=0 and p.deleted=0 and p.parent_id is null
         <if test="request.planRoleId!=null">
             and p.id in (<include refid="pageRoleIncludeReuqest"/>)
@@ -508,7 +535,7 @@
         </if>
         <include refid="pageIncludeP"/>)
         order by p.create_time desc
-    </select>
+    </select>-->
 
     <select id="selectChildrenPlan" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillPlanPageVo">
         select

+ 38 - 58
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingPlanMapper.xml

@@ -146,17 +146,17 @@
     </choose>
 </sql>
     <sql id="pageIncludeP">
+        <if test="request.planName!=null">
+            and p.plan_name like concat('%',#{request.planName},'%')
+        </if>
         <if test="request.execOrgType!=null">
             and p.exec_org_type = #{request.execOrgType}
         </if>
-        <if test="request.planCycle!=null">
-            and p.plan_cycle = #{request.planCycle}
-        </if>
         <if test="request.planStatus!=null">
             and p.plan_status = #{request.planStatus}
         </if>
-        <if test="request.planName!=null">
-            and p.plan_name like concat('%',#{request.planName},'%')
+        <if test="request.planCycle!=null">
+            and p.plan_cycle = #{request.planCycle}
         </if>
         <choose>
             <when test="request.checkSub==true">
@@ -427,12 +427,7 @@
         where id = #{id}
     </delete>
 
-    <delete id="deleteCoreEduTrainingPlanByIds" parameterType="String">
-        delete from core_edu_training_plan where id in
-        <foreach item="id" collection="array" open="(" separator="," close=")">
-            #{id}
-        </foreach>
-    </delete>
+
     <select id="selectPageData" resultType="com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo">
         select
         p.id as id,
@@ -450,6 +445,35 @@
         p.belong_org_id,
         p.belong_org_name
         from core_edu_training_plan p left join sys_user u on p.update_by=u.id
+        where p.deleted = 0
+        <if test="request.planRoleId!=null">
+            and p.id in (  select distinct p1.id
+            from core_edu_training_plan p1
+            inner join core_edu_training_plan_to_role r1 on p1.id = r1.plan_id
+            where p1.deleted = 0
+            and p1.plan_status = 0
+            and r1.role_id = #{request.planRoleId})
+        </if>
+        <include refid="pageIncludeP"/>
+        order by p.create_time desc
+    </select>
+    <!--<select id="selectPageData" resultType="com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo">
+        select
+        p.id as id,
+        p.plan_name,
+        p.create_org_id,
+        p.create_org_name,
+        p.exec_org_type,
+        p.plan_cycle,
+        p.exec_times,
+        p.remark,
+        u.name as updateBy,
+        p.plan_status,
+        p.issue,
+        p.standard,
+        p.belong_org_id,
+        p.belong_org_name
+        from core_edu_training_plan p left join sys_user u on p.update_by=u.id
         where p.deleted = 0 and p.parent_id is null
         and p.standard=1 and p.issue=1
         <if test="request.planRoleId!=null">
@@ -457,13 +481,13 @@
         </if>
         and p.id in ( select sp.parent_id from core_edu_training_plan sp where sp.deleted = 0 and sp.parent_id is not
         null<include refid="pageIncludeSP"/>)
-        <!-- 不是标准计划但是也没下发: 行社自建的计划 -->
+        &lt;!&ndash; 不是标准计划但是也没下发: 行社自建的计划 &ndash;&gt;
         or ( p.standard=0 and p.issue=0 and p.deleted=0 and p.parent_id is null
         <if test="request.planRoleId!=null">
             and p.id in ( <include refid="pageRoleIncludeReuqest"/>)
         </if>
         <include refid="pageIncludeP"/>)
-        <!-- 是标准计划但是未下发 -->
+        &lt;!&ndash; 是标准计划但是未下发 &ndash;&gt;
         or ( p.standard=1 and p.issue=0 and p.deleted=0 and p.parent_id is null
         <if test="request.planRoleId!=null">
             and p.id in ( <include refid="pageRoleIncludeReuqest"/>)
@@ -475,51 +499,7 @@
         </if>
         <include refid="pageIncludeP"/>)
         order by p.create_time desc
-    </select>
-    <select id="selectPageData1" resultType="com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo">
-        select p.id as id,
-        p.plan_name,
-        p.create_org_id,
-        p.create_org_name,
-        p.exec_org_type,
-        p.plan_cycle,
-        p.exec_times,
-        p.remark,
-        u.name as updateBy,
-        p.plan_status,
-        p.issue,
-        p.standard,
-        p.belong_org_id as belongOrgId,
-        p.belong_org_name as belongOrgName
-        from core_edu_training_plan p
-        left join sys_user u on p.update_by = u.id
-        <if test="request.planRoleId!=null">
-            left join (select id from core_edu_training_plan p1 inner join core_edu_training_plan_to_role r1 on p1.id =
-            r1.plan_id where r1.role_id = #{request.planRoleId} and p1.deleted=0) t on p.id = t.id and p.deleted=0
-        </if>
-        where p.deleted = 0 and p.create_org_id=p.belong_org_id and p.plan_status = 0 and p.parent_id is null
-
-        <if test="request.execOrgType!=null">
-            and p.exec_org_type = #{request.execOrgType}
-        </if>
-        <if test="request.planCycle!=null">
-            and p.plan_cycle = #{request.planCycle}
-        </if>
-        <if test="request.planStatus!=null">
-            and p.plan_status = #{request.planStatus}
-        </if>
-        <if test="request.planName!=null">
-            and p.plan_name = #{request.planName}
-        </if>
-        <choose>
-            <when test="request.checkSub==true">
-                and p.belong_org_path like concat(#{request.belongOrgPath},'%')
-            </when>
-            <otherwise>
-                and p.belong_org_id = #{request.belongOrgId}
-            </otherwise>
-        </choose>
-    </select>
+    </select>-->
 
     <select id="selectPlanRole" resultType="com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanRoleVo">
         SELECT distinct r.role_id    as roleId,