Parcourir la source

Merge branch 'V0.1.0' of http://10.87.21.221:8000/jzyd_yyds/soc into V0.1.0

zhulu il y a 1 an
Parent
commit
f71f3bb580

+ 11 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/config/MybatisPlusConfig.java

@@ -31,6 +31,17 @@ public class MybatisPlusConfig {
         interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
         return interceptor;
     }
+    /**
+     * sql 日志
+     *
+     * @return SqlLogInterceptor
+     */
+    @Bean
+   // @ConditionalOnProperty(value = "blade.mybatis-plus.sql-log", matchIfMissing = true)
+    public SqlLogInterceptor sqlLogInterceptor() {
+        return new SqlLogInterceptor();
+    }
+
 
     /**
      * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html

+ 184 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/config/SqlLogInterceptor.java

@@ -0,0 +1,184 @@
+package com.xunmei.common.core.config;
+ 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.core.toolkit.SystemClock;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.executor.statement.StatementHandler;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.plugin.*;
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.reflection.SystemMetaObject;
+import org.apache.ibatis.session.ResultHandler;
+
+ 
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.sql.Statement;
+import java.util.*;
+ 
+/**
+ * 用于输出每条 SQL 语句及其执行时间
+ *
+ * @author hubin nieqiurong TaoYu
+ * @since 2016-07-07
+ */
+@Slf4j
+@Intercepts({
+	@Signature(type = StatementHandler.class, method = "query", args = {Statement.class, ResultHandler.class}),
+	@Signature(type = StatementHandler.class, method = "update", args = Statement.class),
+	@Signature(type = StatementHandler.class, method = "batch", args = Statement.class)
+})
+public class SqlLogInterceptor implements Interceptor {
+	private static final String DRUID_POOLED_PREPARED_STATEMENT = "com.alibaba.druid.pool.DruidPooledPreparedStatement";
+	private static final String T4C_PREPARED_STATEMENT = "oracle.jdbc.driver.T4CPreparedStatement";
+	private static final String ORACLE_PREPARED_STATEMENT_WRAPPER = "oracle.jdbc.driver.OraclePreparedStatementWrapper";
+ 
+	private Method oracleGetOriginalSqlMethod;
+	private Method druidGetSqlMethod;
+ 
+	@Override
+	public Object intercept(Invocation invocation) throws Throwable {
+		Statement statement;
+		Object firstArg = invocation.getArgs()[0];
+		if (Proxy.isProxyClass(firstArg.getClass())) {
+			statement = (Statement) SystemMetaObject.forObject(firstArg).getValue("h.statement");
+		} else {
+			statement = (Statement) firstArg;
+		}
+		MetaObject stmtMetaObj = SystemMetaObject.forObject(statement);
+		try {
+			statement = (Statement) stmtMetaObj.getValue("stmt.statement");
+		} catch (Exception e) {
+			// do nothing
+		}
+		if (stmtMetaObj.hasGetter("delegate")) {
+			//Hikari
+			try {
+				statement = (Statement) stmtMetaObj.getValue("delegate");
+			} catch (Exception ignored) {
+ 
+			}
+		}
+ 
+		String originalSql = null;
+		String stmtClassName = statement.getClass().getName();
+		if (DRUID_POOLED_PREPARED_STATEMENT.equals(stmtClassName)) {
+			try {
+				if (druidGetSqlMethod == null) {
+					Class<?> clazz = Class.forName(DRUID_POOLED_PREPARED_STATEMENT);
+					druidGetSqlMethod = clazz.getMethod("getSql");
+				}
+				Object stmtSql = druidGetSqlMethod.invoke(statement);
+				if (stmtSql instanceof String) {
+					originalSql = (String) stmtSql;
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		} else if (T4C_PREPARED_STATEMENT.equals(stmtClassName)
+			|| ORACLE_PREPARED_STATEMENT_WRAPPER.equals(stmtClassName)) {
+			try {
+				if (oracleGetOriginalSqlMethod != null) {
+					Object stmtSql = oracleGetOriginalSqlMethod.invoke(statement);
+					if (stmtSql instanceof String) {
+						originalSql = (String) stmtSql;
+					}
+				} else {
+					Class<?> clazz = Class.forName(stmtClassName);
+					oracleGetOriginalSqlMethod = getMethodRegular(clazz, "getOriginalSql");
+					if (oracleGetOriginalSqlMethod != null) {
+						//OraclePreparedStatementWrapper is not a public class, need set this.
+						oracleGetOriginalSqlMethod.setAccessible(true);
+						if (null != oracleGetOriginalSqlMethod) {
+							Object stmtSql = oracleGetOriginalSqlMethod.invoke(statement);
+							if (stmtSql instanceof String) {
+								originalSql = (String) stmtSql;
+							}
+						}
+					}
+				}
+			} catch (Exception e) {
+				//ignore
+			}
+		}
+		if (originalSql == null) {
+			originalSql = statement.toString();
+		}
+		originalSql = originalSql.replaceAll("[\\s]+", StringPool.SPACE);
+		int index = indexOfSqlStart(originalSql);
+		if (index > 0) {
+			originalSql = originalSql.substring(index);
+		}
+ 
+		// 计算执行 SQL 耗时
+		long start = SystemClock.now();
+		Object result = invocation.proceed();
+		long timing = SystemClock.now() - start;
+ 
+		// SQL 打印执行结果
+		Object target = PluginUtils.realTarget(invocation.getTarget());
+		MetaObject metaObject = SystemMetaObject.forObject(target);
+		MappedStatement ms = (MappedStatement) metaObject.getValue("delegate.mappedStatement");
+		// 打印 sql
+		log.info(
+            "\n==============  Sql Start  ==============" +
+                "\nExecute ID  :{}" +
+                "\nExecute SQL :{}" +
+                "\nExecute Time:{} ms" +
+                    "\n==============  Sql  End   ==============\n",
+            ms.getId(), originalSql, timing);
+		return result;
+	}
+ 
+	@Override
+	public Object plugin(Object target) {
+		if (target instanceof StatementHandler) {
+			return Plugin.wrap(target, this);
+		}
+		return target;
+	}
+ 
+	/**
+	 * 获取此方法名的具体 Method
+	 *
+	 * @param clazz      class 对象
+	 * @param methodName 方法名
+	 * @return 方法
+	 */
+	private Method getMethodRegular(Class<?> clazz, String methodName) {
+		if (Object.class.equals(clazz)) {
+			return null;
+		}
+		for (Method method : clazz.getDeclaredMethods()) {
+			if (method.getName().equals(methodName)) {
+				return method;
+			}
+		}
+		return getMethodRegular(clazz.getSuperclass(), methodName);
+	}
+ 
+	/**
+	 * 获取sql语句开头部分
+	 *
+	 * @param sql ignore
+	 * @return ignore
+	 */
+	private int indexOfSqlStart(String sql) {
+		String upperCaseSql = sql.toUpperCase();
+		Set<Integer> set = new HashSet<>();
+		set.add(upperCaseSql.indexOf("SELECT "));
+		set.add(upperCaseSql.indexOf("UPDATE "));
+		set.add(upperCaseSql.indexOf("INSERT "));
+		set.add(upperCaseSql.indexOf("DELETE "));
+		set.remove(-1);
+		if (CollectionUtils.isEmpty(set)) {
+			return -1;
+		}
+		List<Integer> list = new ArrayList<>(set);
+		list.sort(Comparator.naturalOrder());
+		return list.get(0);
+	}
+ 
+}

+ 0 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillTaskMapper.java

@@ -64,5 +64,4 @@ public interface CoreDrillTaskMapper extends BaseMapper<CoreDrillTask> {
 
     Integer checkHasTaskByPlanParentId(@Param("planId") Long planId);
 
-    Integer selectDoneByPlanId(@Param("id") Long id);
 }

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java

@@ -166,7 +166,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             record.setHaTask(hasTask);
         }
         if (Objects.equals(record.getPlanCycle(), DrillPlanCycleEnum.NONE.getCode())){
-            final Integer done = coreDrillTaskMapper.selectDoneByPlanId(record.getId());
+            final Integer done = coreDrillTaskMapper.checkHasTaskIsDoneByPlanIdOrParentId(record.getId());
             record.setDone(done);
         }
     }
@@ -199,7 +199,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             vo.setDone(done);
         }
         if (Objects.equals(plan.getPlanCycle(), DrillPlanCycleEnum.NONE.getCode())){
-            final Integer done = coreDrillTaskMapper.selectDoneByPlanId(plan.getId());
+            final Integer done = coreDrillTaskMapper.checkHasTaskIsDoneByPlanIdOrParentId(plan.getId());
             vo.setDone(done);
         }
         return vo;

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -779,7 +779,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         BigDecimal finishBigDecimal = new BigDecimal(finish);
         BigDecimal shouldFinishBigDecimal = new BigDecimal(shouldFinish);
 
-        BigDecimal divide = finishBigDecimal.divide(shouldFinishBigDecimal, 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
+        BigDecimal divide = finishBigDecimal.divide(shouldFinishBigDecimal, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).stripTrailingZeros();
 
 
         return divide.toString();

+ 0 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingTaskMapper.java

@@ -60,5 +60,4 @@ public interface CoreEduTrainingTaskMapper extends BaseMapper<CoreEduTrainingTas
 
     Integer checkHasTaskByPlanParentId(@Param("planId") Long planId);
 
-    Integer selectDoneByPlanId(@Param("id") Long id);
 }

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java

@@ -170,7 +170,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             record.setHasTask(hasTask);
         }
         if (ObjectUtil.equal(record.getPlanCycle(),EduTrainingPlanCycleEnum.NONE.getCode())){
-            record.setDone(coreEduTrainingTaskMapper.selectDoneByPlanId(record.getId()));
+            record.setDone(coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanIdOrParentId(record.getId()));
         }
     }
 
@@ -200,7 +200,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             vo.setDone(done);
         }
         if (ObjectUtil.equal(plan.getPlanCycle(),EduTrainingPlanCycleEnum.NONE.getCode())){
-            vo.setDone(coreEduTrainingTaskMapper.selectDoneByPlanId(plan.getId()));
+            vo.setDone(coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanIdOrParentId(plan.getId()));
         }
         return vo;
     }

+ 6 - 15
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionReformServiceImpl.java

@@ -3,35 +3,26 @@ package com.xunmei.core.question.service.impl;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.EasyExcel;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.xunmei.common.core.constant.SecurityConstants;
-import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
 import com.xunmei.common.core.exception.ServiceException;
-import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.question.QuestionConfirmEnum;
 import com.xunmei.core.question.QuestionReformEnum;
-import com.xunmei.core.question.QuestionSrcType;
 import com.xunmei.core.question.QuestionStepEnum;
 import com.xunmei.core.question.domain.Question;
 import com.xunmei.core.question.domain.QuestionFlow;
-import com.xunmei.core.question.dto.*;
+import com.xunmei.core.question.dto.QuestionExportDto;
+import com.xunmei.core.question.dto.QuestionReformDto;
+import com.xunmei.core.question.dto.ReformPageDto;
 import com.xunmei.core.question.mapper.QuestionFlowMapper;
 import com.xunmei.core.question.mapper.QuestionMapper;
 import com.xunmei.core.question.service.IQuestionReformService;
-import com.xunmei.core.question.service.IQuestionService;
-import com.xunmei.core.question.vo.QuestionFlowVo;
-import com.xunmei.core.question.vo.QuestionVo;
 import com.xunmei.core.resumption.service.IAppResumptionDataRemarkimgService;
-import com.xunmei.core.safetyCheck.domain.CoreSafetyTaskDataRemarkimg;
 import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskDataRemarkimgService;
 import com.xunmei.system.api.RemoteOrgService;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -39,7 +30,6 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 隐患问题清单Service业务层处理
@@ -208,10 +198,11 @@ public class QuestionReformServiceImpl extends ServiceImpl<QuestionMapper, Quest
         Integer index = 1;
         for (QuestionExportDto questionExportDto : list) {
             questionExportDto.setIndex(index++);
-            if (isOverdue(questionExportDto.getConfirmStatus(),questionExportDto.getReformDeadline())) {
+           /* if (isOverdue(questionExportDto.getConfirmStatus(),questionExportDto.getReformDeadline())) {
                 //任务未结束并且过了整改结束日期
                 questionExportDto.setReformStatusText("已逾期");
-            }
+            }*/
+
         }
         response.setContentType("application/vnd.ms-excel");
         // 调用EasyExcel的导出方法

+ 5 - 13
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/job/SafetyCheckJobBusiness.java

@@ -211,6 +211,9 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
                     tasks.addAll(planTask);
                 }
 
+                String collect = tasks.stream().map(t -> t.getExecOrg().getId()).distinct().map(String::valueOf).collect(Collectors.joining(","));
+                System.out.println("("+collect+")");
+                System.out.println("("+collect.split(",").length+")");
 
                 //生成具体任务
                 buildTask(datetime, tasks, dateRange.getStartTime(), dateRange.getEndTime(), true, 0);
@@ -418,17 +421,6 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
         PlanTaskBuildVo vo = null;
         for (SysOrg org : execOrgList) {
 
-
-//            vo = new PlanTaskBuildVo();
-//            vo.setPlanId(plan.getId());
-//            vo.setEndTime(plan.getEndDate());
-//            vo.setStartTime(plan.getStartDate());
-//            vo.setCheckOrg(check);
-//            vo.setExecOrg(org);
-//            vo.setPlanName(plan.getPlanName());
-//            vo.setRole(role);
-//            vo.setPlanCycle(Math.toIntExact(plan.getPlanCycle()));
-//            list.add(vo);
             //履职和安全检查存在周期字典差别,除了无周期都是+2
             int cycleCode = 0;
             if (plan.getPlanCycle() != 6) {
@@ -591,11 +583,11 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
                 checkTaskService.remove(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getOrgId, checkTask.getOrgId()).eq(CoreSafetyTask::getYmdDate, checkTask.getYmdDate()).in(CoreSafetyTask::getStatus, 1, 2).eq(CoreSafetyTask::getPlanId, checkTask.getPlanId()));
                 ats.add(checkTask);
             }
-
+/*
             if (ats.size() == 200) {
                 checkTaskService.saveBatch(ats);
                 ats = new ArrayList<>();
-            }
+            }*/
         }
 
         if (ats.size() > 0) {

+ 1 - 4
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml

@@ -449,7 +449,7 @@
     <select id="checkHasTaskIsDoneByPlanIdOrParentId" resultType="java.lang.Integer">
         select 1
         from core_drill_task t
-        where t.status = 2
+        where t.status in (2,3)
           and (t.plan_id = #{planId} or plan_id in (select id from core_drill_plan where parent_id = #{planId}))
         limit 1
     </select>
@@ -466,7 +466,4 @@
         SELECT 1 FROM `core_drill_task` where plan_id= #{planId} LIMIT 1;
     </select>
 
-    <select id="selectDoneByPlanId" resultType="java.lang.Integer">
-        select 1 from core_drill_task where plan_id=#{id} and status in (2,3)
-    </select>
 </mapper>

+ 0 - 3
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml

@@ -325,7 +325,4 @@
         SELECT 1 FROM `core_edu_training_task` where plan_id=#{planId} LIMIT 1
     </select>
 
-    <select id="selectDoneByPlanId" resultType="java.lang.Integer">
-        select 1 from core_edu_training_task where plan_id=#{id} and status =2
-    </select>
 </mapper>

+ 16 - 17
soc-modules/soc-modules-core/src/main/resources/mapper/question/QuestionMapper.xml

@@ -403,15 +403,7 @@
                     and q.reform_status=#{params.reformStatus}
                 </otherwise>
             </choose>
-<!--            <if test="params.reformStatus==12">-->
-<!--                and q.confirm_status!=3 and q.reform_status!=13 and  q.reform_deadline &lt; #{today}-->
-<!--            </if>-->
-<!--            <if test="params.reformStatus!=12 and params.reformStatus==10">-->
-<!--                and q.reform_status=#{params.reformStatus} and  q.reform_deadline > #{today}-->
-<!--            </if>-->
-<!--            <if test="params.reformStatus!=12">-->
-<!--                and q.reform_status=#{params.reformStatus}-->
-<!--            </if>-->
+
         </if>
         <if test="params.reformRange!=null and params.reformRange.length==2">
 <!--            and q.reform_deadline between #{params.reformRange[0]} and #{params.reformRange[1]}-->
@@ -478,7 +470,7 @@
         f2.executor_name as dissenterName,
         f2.description as dissentDesc,
         f3.reform_date as reformDate,
-        case q.reform_status when 10 then '未整改' when 11 then '已整改' when 13 then '逾期整改' else '' end as reformStatusText,
+        case q.reform_status when 10 then '待整改' when 11 then '已整改'  when 12 then '已逾期' when 13 then '逾期整改' end as reformStatusText,
         f3.description as reformDesc,
         o.affiliated_area,
         o.affiliated_bank
@@ -539,7 +531,7 @@
         f2.executor_name as dissenterName,
         f2.description as dissentDesc,
         f3.reform_date as reformDate,
-        case q.reform_status when 10 then '未整改' when 11 then '已整改' else '' end as reformStatusText,
+        case q.reform_status when 10 then '待整改' when 11 then '已整改'  when 12 then '已逾期' when 13 then '逾期整改' else '' end as reformStatusText,
         f3.description as reformDesc,
         o.affiliated_area,
         o.affiliated_bank
@@ -556,12 +548,19 @@
             and q.org_id=#{params.orgId}
         </if>
         <if test="params.reformStatus!=null">
-            <if test="params.reformStatus==12">
-                and q.confirm_status!=3 and q.reform_deadline &lt; #{today}
-            </if>
-            <if test="params.reformStatus!=12">
-                and q.reform_status=#{params.reformStatus}
-            </if>
+            <choose>
+                <!--已关闭 confirm_status ==3 , 逾期整改 q.reform_status==13  -->
+                <when test="params.reformStatus==12">
+                    and q.confirm_status!=3 and q.reform_status!=13 and q.reform_status!=11 and  q.reform_deadline &lt; #{today}
+                </when>
+                <when test="params.reformStatus!=12 and params.reformStatus==10">
+                    and q.reform_status=#{params.reformStatus} and  q.reform_deadline > #{today}
+                </when>
+                <otherwise>
+                    and q.reform_status=#{params.reformStatus}
+                </otherwise>
+            </choose>
+
         </if>
         <if test="params.reformRange!=null and params.reformRange.length==2">
 <!--            and q.reform_deadline between #{params.reformRange[0]} and #{params.reformRange[1]}-->

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/Sm4Util.java

@@ -185,7 +185,7 @@ public class Sm4Util {
 
 
     public static void main(String[] args) {
-        String s = encryptEcb("51d95b1dc43a9faaad0570f81c755fcf", "update core_drill_task set status=3 where id=1785571098942177286;");
+        String s = encryptEcb("51d95b1dc43a9faaad0570f81c755fcf", "update core_drill_task set status=3 where id=1785571100489875460;");
 
         System.out.println(s);