feat(3.2.0) fix: JobSummaryMapper.jobLineList日期格式化字符串,函数适配不同数据库

* fix: JobSummaryMapper.jobLineList日期格式化字符串,函数适配不同数据库
* feat: 对齐3.2.0 mysql版本DDL
This commit is contained in:
dhb52 2024-03-30 07:26:59 +00:00 committed by byteblogs168
parent 7abbe4289c
commit a7211b4691
5 changed files with 59 additions and 26 deletions

View File

@ -83,7 +83,7 @@
COALESCE(SUM(success_num + fail_num + stop_num + cancel_num), 0) AS total COALESCE(SUM(success_num + fail_num + stop_num + cancel_num), 0) AS total
FROM ( FROM (
SELECT SELECT
DATE_FORMAT(trigger_at, #{dateFormat}) AS createDt, TO_CHAR(trigger_at, #{dateFormat}) AS createDt,
success_num, success_num,
fail_num, fail_num,
stop_num, stop_num,
@ -91,7 +91,7 @@
FROM job_summary FROM job_summary
${ew.customSqlSegment} ${ew.customSqlSegment}
) )
GROUP BY DATE_FORMAT(trigger_at, #{dateFormat}) GROUP BY createDt
</select> </select>
<select id="toJobTask" <select id="toJobTask"

View File

@ -53,7 +53,7 @@
<select id="jobLineList" <select id="jobLineList"
resultType="com.aizuda.easy.retry.template.datasource.persistence.dataobject.DashboardLineResponseDO"> resultType="com.aizuda.easy.retry.template.datasource.persistence.dataobject.DashboardLineResponseDO">
SELECT SELECT
DATE_FORMAT(trigger_at, #{dateFormat}) AS createDt, TO_CHAR(trigger_at, #{dateFormat}) AS createDt,
COALESCE(SUM(success_num), 0) AS success, COALESCE(SUM(success_num), 0) AS success,
COALESCE(SUM(fail_num), 0) AS failNum, COALESCE(SUM(fail_num), 0) AS failNum,
COALESCE(SUM(stop_num), 0) AS stop, COALESCE(SUM(stop_num), 0) AS stop,
@ -62,7 +62,7 @@
COALESCE(SUM(success_num + fail_num + stop_num + cancel_num), 0) AS total COALESCE(SUM(success_num + fail_num + stop_num + cancel_num), 0) AS total
FROM job_summary FROM job_summary
${ew.customSqlSegment} ${ew.customSqlSegment}
GROUP BY DATE_FORMAT(trigger_at, #{dateFormat}) GROUP BY createDt
</select> </select>
<select id="toJobTask" <select id="toJobTask"
@ -85,7 +85,8 @@
<if test="systemTaskType == 4"> <if test="systemTaskType == 4">
CONCAT(group_name, '/', (SELECT workflow_name FROM workflow WHERE id = business_id)) name, CONCAT(group_name, '/', (SELECT workflow_name FROM workflow WHERE id = business_id)) name,
</if> </if>
SUM(fail_num) AS total FROM job_summary SUM(fail_num) AS total
FROM job_summary
${ew.customSqlSegment} ${ew.customSqlSegment}
HAVING SUM(fail_num) > 0 HAVING SUM(fail_num) > 0
ORDER BY total DESC LIMIT 10 ORDER BY total DESC LIMIT 10

View File

@ -71,7 +71,7 @@
ISNULL(SUM(success_num + fail_num + stop_num + cancel_num), 0) AS total ISNULL(SUM(success_num + fail_num + stop_num + cancel_num), 0) AS total
FROM ( FROM (
SELECT SELECT
DATE_FORMAT(trigger_at, #{dateFormat}) AS createDt, FORMAT(trigger_at, #{dateFormat}) AS createDt,
success_num, success_num,
stop_num, stop_num,
cancel_num, cancel_num,
@ -79,7 +79,7 @@
FROM job_summary FROM job_summary
${ew.customSqlSegment} ${ew.customSqlSegment}
) AS subquery ) AS subquery
GROUP BY DATE_FORMAT(trigger_at, #{dateFormat}) GROUP BY createDt
</select> </select>
<select id="toJobTask" <select id="toJobTask"

View File

@ -1,5 +1,7 @@
package com.aizuda.easy.retry.server.common.enums; package com.aizuda.easy.retry.server.common.enums;
import com.aizuda.easy.retry.template.datasource.enums.DbTypeEnum;
import com.aizuda.easy.retry.template.datasource.utils.DbUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@ -13,15 +15,13 @@ import lombok.Getter;
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public enum DashboardLineEnum { public enum DashboardLineEnum {
DAY("DAY"),
DAY("DAY", "%H"), WEEK("WEEK"),
WEEK("WEEK", "%Y-%m-%d"), MONTH("MONTH"),
MONTH("MONTH", "%Y-%m-%d"), YEAR("YEAR"),
YEAR("YEAR", "%Y-%m"),
; ;
private final String unit; private final String unit;
private final String dateFormat;
public static DashboardLineEnum modeOf(String mode) { public static DashboardLineEnum modeOf(String mode) {
for (DashboardLineEnum value : DashboardLineEnum.values()) { for (DashboardLineEnum value : DashboardLineEnum.values()) {
@ -32,4 +32,35 @@ public enum DashboardLineEnum {
return DashboardLineEnum.WEEK; return DashboardLineEnum.WEEK;
} }
public static String dateFormat(String unit) {
DashboardLineEnum mode = modeOf(unit);
if (DbUtils.getDbType().equals(DbTypeEnum.MYSQL)) {
switch (mode) {
case YEAR: return "%Y-%m";
case DAY: return "%H";
default: return "%Y-%m-%d";
}
} else if (DbUtils.getDbType().equals(DbTypeEnum.MARIADB)) {
switch (mode) {
case YEAR: return "%Y-%m";
case DAY: return "%H";
default: return "%Y-%m-%d";
}
} else if (DbUtils.getDbType().equals(DbTypeEnum.SQLSERVER)) {
switch (mode) {
case YEAR: return "yyyy-MM";
case DAY: return "HH";
default: return "yyyy-MM-dd";
}
} else { // Oracle, Postgres
switch (mode) {
case YEAR: return "yyyy-MM";
case DAY: return "HH24";
default: return "yyyy-MM-dd";
}
}
}
} }

View File

@ -222,7 +222,7 @@ public class DashBoardServiceImpl implements DashBoardService {
.eq(JobSummary::getSystemTaskType, systemTaskType) .eq(JobSummary::getSystemTaskType, systemTaskType)
.eq(JobSummary::getNamespaceId, namespaceId) .eq(JobSummary::getNamespaceId, namespaceId)
.between(JobSummary::getTriggerAt, startDateTime, endDateTime); .between(JobSummary::getTriggerAt, startDateTime, endDateTime);
List<DashboardLineResponseDO> dashboardLineResponseDOList = jobSummaryMapper.jobLineList(DashboardLineEnum.modeOf(type).getDateFormat(), queryWrapper); List<DashboardLineResponseDO> dashboardLineResponseDOList = jobSummaryMapper.jobLineList(DashboardLineEnum.dateFormat(type), queryWrapper);
List<DashboardLineResponseVO> dashboardLineResponseVOList = DispatchQuantityResponseVOConverter.INSTANCE.toDashboardLineResponseVO(dashboardLineResponseDOList); List<DashboardLineResponseVO> dashboardLineResponseVOList = DispatchQuantityResponseVOConverter.INSTANCE.toDashboardLineResponseVO(dashboardLineResponseDOList);
dateTypeEnum.getConsumer().accept(dashboardLineResponseVOList); dateTypeEnum.getConsumer().accept(dashboardLineResponseVOList);
dashboardLineResponseVOList.sort(Comparator.comparing(a -> a.getCreateDt())); dashboardLineResponseVOList.sort(Comparator.comparing(a -> a.getCreateDt()));
@ -289,4 +289,5 @@ public class DashBoardServiceImpl implements DashBoardService {
} }
return new PageResult<>(serverNodePageDTO, serverNodeResponseVOS); return new PageResult<>(serverNodePageDTO, serverNodeResponseVOS);
} }
} }