refactor(biz):优化阿里工单查询逻辑并完善测试用例
- 简化 JSON_QUERY 函数调用参数,去除冗余的数组包装操作 -优化 SQL 查询语句中的时间范围过滤条件,提高执行效率- 在 AlibabaWorkOrderMapper 接口中添加 @Mapper 注解以支持 MyBatis 扫描 - 更新单元测试配置文件,适配达梦数据库驱动及连接信息 - 新增工单实体保存测试方法,验证数据插入功能完整性- 移除无效的 Spring Import 注解,精简测试类依赖注入方式
This commit is contained in:
@@ -1,23 +1,53 @@
|
|||||||
package com.jeelowcode.test.alibaba;
|
package com.jeelowcode.test.alibaba;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.db.sql.SqlUtil;
|
import cn.hutool.db.sql.SqlUtil;
|
||||||
|
import com.jeelowcode.module.biz.entity.AlibabaWorkOrder;
|
||||||
import com.jeelowcode.module.biz.job.AlibabaWorkOrderJob;
|
import com.jeelowcode.module.biz.job.AlibabaWorkOrderJob;
|
||||||
import com.jeelowcode.module.biz.service.impl.AlibabaWorkOrderServiceImpl;
|
import com.jeelowcode.module.biz.mapper.AlibabaWorkOrderMapper;
|
||||||
import com.jeelowcode.tool.framework.test.core.ut.BaseDbAndRedisUnitTest;
|
import com.jeelowcode.tool.framework.test.core.ut.BaseDbAndRedisUnitTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.context.annotation.Import;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Import({AlibabaWorkOrderServiceImpl.class})
|
|
||||||
public class WorkOrderSimpleTest extends BaseDbAndRedisUnitTest {
|
public class WorkOrderSimpleTest extends BaseDbAndRedisUnitTest {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AlibabaWorkOrderServiceImpl workOrderService;
|
private AlibabaWorkOrderMapper baseMapper;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBuildSql() {
|
public void testBuildSql() {
|
||||||
System.out.println(SqlUtil.formatSql(AlibabaWorkOrderJob.buildSql(null, null)));
|
System.out.println(SqlUtil.formatSql(AlibabaWorkOrderJob.buildSql(null, null)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSaveWorkOrder() {
|
||||||
|
AlibabaWorkOrder workOrder = new AlibabaWorkOrder()
|
||||||
|
.setId(IdUtil.getSnowflakeNextId())
|
||||||
|
.setWorkOrderId(IdUtil.simpleUUID())
|
||||||
|
.setCampusId(IdUtil.simpleUUID())
|
||||||
|
.setCampusName("中国星网雄安总部")
|
||||||
|
.setWorkOrderLevel("一级工单")
|
||||||
|
.setCheckArea("网络")
|
||||||
|
.setCheckItem("网络设备")
|
||||||
|
.setCheckContent("网络设备异常")
|
||||||
|
.setCheckPersonId(IdUtil.simpleUUID())
|
||||||
|
.setCheckPersonName("张三")
|
||||||
|
.setCheckTime(LocalDateTime.now())
|
||||||
|
.setCheckQuestion("网络设备异常")
|
||||||
|
.setCorrectDeadline(LocalDateTime.now())
|
||||||
|
.setCorrectPersonId(IdUtil.simpleUUID())
|
||||||
|
.setCorrectPersonName("张三")
|
||||||
|
.setCorrectAction("网络设备异常")
|
||||||
|
.setConfirmPersonId(IdUtil.simpleUUID())
|
||||||
|
.setConfirmPersonName("张三")
|
||||||
|
.setGmtModified(LocalDateTime.now())
|
||||||
|
.setGmtSubModified(LocalDateTime.now())
|
||||||
|
.setGmtRelateModified(LocalDateTime.now())
|
||||||
|
.setGmtRelateSubModified(LocalDateTime.now());
|
||||||
|
baseMapper.insert(workOrder);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,22 +9,25 @@ spring:
|
|||||||
primary: master
|
primary: master
|
||||||
datasource:
|
datasource:
|
||||||
master:
|
master:
|
||||||
# MYSQL数据库 主库,业务库
|
# 达梦数据库 主库,业务库
|
||||||
name: jeelowcode_pre_master
|
name: jeelowcode_pre_master
|
||||||
url: jdbc:dm://127.0.0.1:5236?schema=LOWCODE_MASTER&compatibleMode=oracle&socketTimeout=60000&connectTimeout=30000
|
url: jdbc:dm://127.0.0.1:5236?schema=LOWCODE_MASTER&compatibleMode=oracle&socketTimeout=60000&connectTimeout=30000
|
||||||
username: SYSDBA
|
username: SYSDBA
|
||||||
password: 83kTnuLWPczi
|
password: 83kTnuLWPczi
|
||||||
|
driver-class-name: dm.jdbc.driver.DmDriver
|
||||||
jeelowcode: # 从库,框架库
|
jeelowcode: # 从库,框架库
|
||||||
name: jeelowcode_pre_frame
|
name: jeelowcode_pre_frame
|
||||||
url: jdbc:dm://127.0.0.1:5236?schema=LOWCODE_FRAME&compatibleMode=oracle&socketTimeout=60000&connectTimeout=30000
|
url: jdbc:dm://127.0.0.1:5236?schema=LOWCODE_FRAME&compatibleMode=oracle&socketTimeout=60000&connectTimeout=30000
|
||||||
username: SYSDBA
|
username: SYSDBA
|
||||||
password: 83kTnuLWPczi
|
password: 83kTnuLWPczi
|
||||||
|
driver-class-name: dm.jdbc.driver.DmDriver
|
||||||
slave: # 日志库单独
|
slave: # 日志库单独
|
||||||
name: dev_jeelowcode_log
|
name: dev_jeelowcode_log
|
||||||
lazy: true # 开启懒加载,保证启动速度
|
lazy: true # 开启懒加载,保证启动速度
|
||||||
url: jdbc:dm://127.0.0.1:5236?schema=LOWCODE_LOG&compatibleMode=oracle&socketTimeout=60000&connectTimeout=30000
|
url: jdbc:dm://127.0.0.1:5236?schema=LOWCODE_LOG&compatibleMode=oracle&socketTimeout=60000&connectTimeout=30000
|
||||||
username: SYSDBA
|
username: SYSDBA
|
||||||
password: 83kTnuLWPczi
|
password: 83kTnuLWPczi
|
||||||
|
driver-class-name: dm.jdbc.driver.DmDriver
|
||||||
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
||||||
redis:
|
redis:
|
||||||
host: 127.0.0.1 # 地址
|
host: 127.0.0.1 # 地址
|
||||||
|
|||||||
@@ -201,15 +201,12 @@ public class AlibabaWorkOrderJob implements JobHandler {
|
|||||||
" REPLACE( " +
|
" REPLACE( " +
|
||||||
" JSON_QUERY( " +
|
" JSON_QUERY( " +
|
||||||
" wos.SOP_SCHEMA, " +
|
" wos.SOP_SCHEMA, " +
|
||||||
" '$[0].sopSchema.componentsTree[0].children[0].children[*].props.label' WITH CONDITIONAL WRAPPER, " +
|
" '$[0].sopSchema.componentsTree[0].children[0].children[*].props.label' WITH CONDITIONAL WRAPPER " +
|
||||||
" '[', " +
|
|
||||||
" ']', " +
|
|
||||||
" ',' " +
|
|
||||||
" ), " +
|
" ), " +
|
||||||
" ']', " +
|
" '[', " +
|
||||||
" '' " +
|
" '' " +
|
||||||
" ), " +
|
" ), " +
|
||||||
" '[', " +
|
" ']', " +
|
||||||
" '' " +
|
" '' " +
|
||||||
" ), " +
|
" ), " +
|
||||||
" ',' " +
|
" ',' " +
|
||||||
@@ -220,17 +217,10 @@ public class AlibabaWorkOrderJob implements JobHandler {
|
|||||||
" LISTAGG( " +
|
" LISTAGG( " +
|
||||||
" REPLACE( " +
|
" REPLACE( " +
|
||||||
" REPLACE( " +
|
" REPLACE( " +
|
||||||
" JSON_QUERY( " +
|
" JSON_QUERY(sl.CONTENT, '$.sopInfo.*' WITH CONDITIONAL WRAPPER), " +
|
||||||
" sl.CONTENT, " +
|
|
||||||
" '$.sopInfo.*' WITH CONDITIONAL WRAPPER, " +
|
|
||||||
" '[', " +
|
" '[', " +
|
||||||
" ']', " +
|
|
||||||
" ',' " +
|
|
||||||
" ), " +
|
|
||||||
" ']', " +
|
|
||||||
" '' " +
|
" '' " +
|
||||||
" ), " +
|
" ) ']', " +
|
||||||
" '[', " +
|
|
||||||
" '' " +
|
" '' " +
|
||||||
" ), " +
|
" ), " +
|
||||||
" ',' " +
|
" ',' " +
|
||||||
@@ -368,15 +358,12 @@ public class AlibabaWorkOrderJob implements JobHandler {
|
|||||||
" REPLACE( " +
|
" REPLACE( " +
|
||||||
" JSON_QUERY( " +
|
" JSON_QUERY( " +
|
||||||
" wos.SOP_SCHEMA, " +
|
" wos.SOP_SCHEMA, " +
|
||||||
" '$[0].sopSchema.componentsTree[0].children[0].children[*].props.label' WITH CONDITIONAL WRAPPER, " +
|
" '$[0].sopSchema.componentsTree[0].children[0].children[*].props.label' WITH CONDITIONAL WRAPPER " +
|
||||||
" '[', " +
|
|
||||||
" ']', " +
|
|
||||||
" ',' " +
|
|
||||||
" ), " +
|
" ), " +
|
||||||
" ']', " +
|
" '[', " +
|
||||||
" '' " +
|
" '' " +
|
||||||
" ), " +
|
" ), " +
|
||||||
" '[', " +
|
" ']', " +
|
||||||
" '' " +
|
" '' " +
|
||||||
" ), " +
|
" ), " +
|
||||||
" ',' " +
|
" ',' " +
|
||||||
@@ -387,17 +374,10 @@ public class AlibabaWorkOrderJob implements JobHandler {
|
|||||||
" LISTAGG( " +
|
" LISTAGG( " +
|
||||||
" REPLACE( " +
|
" REPLACE( " +
|
||||||
" REPLACE( " +
|
" REPLACE( " +
|
||||||
" JSON_QUERY( " +
|
" JSON_QUERY(sl.CONTENT, '$.sopInfo.*' WITH CONDITIONAL WRAPPER), " +
|
||||||
" sl.CONTENT, " +
|
|
||||||
" '$.sopInfo.*' WITH CONDITIONAL WRAPPER, " +
|
|
||||||
" '[', " +
|
" '[', " +
|
||||||
" ']', " +
|
|
||||||
" ',' " +
|
|
||||||
" ), " +
|
|
||||||
" ']', " +
|
|
||||||
" '' " +
|
" '' " +
|
||||||
" ), " +
|
" ) ']', " +
|
||||||
" '[', " +
|
|
||||||
" '' " +
|
" '' " +
|
||||||
" ), " +
|
" ), " +
|
||||||
" ',' " +
|
" ',' " +
|
||||||
@@ -438,7 +418,72 @@ public class AlibabaWorkOrderJob implements JobHandler {
|
|||||||
" ) rwoe " +
|
" ) rwoe " +
|
||||||
" GROUP BY " +
|
" GROUP BY " +
|
||||||
" rwoe.\"RELATE_WORK_ORDER_ID\" " +
|
" rwoe.\"RELATE_WORK_ORDER_ID\" " +
|
||||||
" ) rwoa ON mwoe.WORK_ORDER_ID = rwoa.RELATE_WORK_ORDER_ID ");
|
" ) rwoa ON mwoe.WORK_ORDER_ID = rwoa.RELATE_WORK_ORDER_ID " +
|
||||||
|
"WHERE " +
|
||||||
|
" ( " +
|
||||||
|
" mwoe.GMT_MODIFIED BETWEEN TO_DATE( " +
|
||||||
|
" NVL( " +
|
||||||
|
" '2025-11-11 11:11:11', " +
|
||||||
|
" TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 00:00:00' " +
|
||||||
|
" ), " +
|
||||||
|
" 'YYYY-MM-DD HH24:MI:SS' " +
|
||||||
|
" ) " +
|
||||||
|
" AND TO_DATE( " +
|
||||||
|
" NVL( " +
|
||||||
|
" '2025-11-11 11:11:11', " +
|
||||||
|
" TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 23:59:59' " +
|
||||||
|
" ), " +
|
||||||
|
" 'YYYY-MM-DD HH24:MI:SS' " +
|
||||||
|
" ) " +
|
||||||
|
" ) " +
|
||||||
|
" OR ( " +
|
||||||
|
" mwoe.SUB_GMT_MODIFIED BETWEEN TO_DATE( " +
|
||||||
|
" NVL( " +
|
||||||
|
" '2025-11-11 11:11:11', " +
|
||||||
|
" TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 00:00:00' " +
|
||||||
|
" ), " +
|
||||||
|
" 'YYYY-MM-DD HH24:MI:SS' " +
|
||||||
|
" ) " +
|
||||||
|
" AND TO_DATE( " +
|
||||||
|
" NVL( " +
|
||||||
|
" '2025-11-11 11:11:11', " +
|
||||||
|
" TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 23:59:59' " +
|
||||||
|
" ), " +
|
||||||
|
" 'YYYY-MM-DD HH24:MI:SS' " +
|
||||||
|
" ) " +
|
||||||
|
" ) " +
|
||||||
|
" OR ( " +
|
||||||
|
" rwoa.GMT_MODIFIED BETWEEN TO_DATE( " +
|
||||||
|
" NVL( " +
|
||||||
|
" '2025-11-11 11:11:11', " +
|
||||||
|
" TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 00:00:00' " +
|
||||||
|
" ), " +
|
||||||
|
" 'YYYY-MM-DD HH24:MI:SS' " +
|
||||||
|
" ) " +
|
||||||
|
" AND TO_DATE( " +
|
||||||
|
" NVL( " +
|
||||||
|
" '2025-11-11 11:11:11', " +
|
||||||
|
" TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 23:59:59' " +
|
||||||
|
" ), " +
|
||||||
|
" 'YYYY-MM-DD HH24:MI:SS' " +
|
||||||
|
" ) " +
|
||||||
|
" ) " +
|
||||||
|
" OR ( " +
|
||||||
|
" rwoa.SUB_GMT_MODIFIED BETWEEN TO_DATE( " +
|
||||||
|
" NVL( " +
|
||||||
|
" '2025-11-11 11:11:11', " +
|
||||||
|
" TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 00:00:00' " +
|
||||||
|
" ), " +
|
||||||
|
" 'YYYY-MM-DD HH24:MI:SS' " +
|
||||||
|
" ) " +
|
||||||
|
" AND TO_DATE( " +
|
||||||
|
" NVL( " +
|
||||||
|
" '2025-11-11 11:11:11', " +
|
||||||
|
" TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 23:59:59' " +
|
||||||
|
" ), " +
|
||||||
|
" 'YYYY-MM-DD HH24:MI:SS' " +
|
||||||
|
" ) " +
|
||||||
|
" )");
|
||||||
// 如果时间参数存在并且合法,则添加时间条件
|
// 如果时间参数存在并且合法,则添加时间条件
|
||||||
if (Objects.nonNull(startTime) && Objects.nonNull(endTime) && startTime.isBefore(endTime)) {
|
if (Objects.nonNull(startTime) && Objects.nonNull(endTime) && startTime.isBefore(endTime)) {
|
||||||
String formattedStart = LocalDateTimeUtil.format(startTime, FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
|
String formattedStart = LocalDateTimeUtil.format(startTime, FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
|
||||||
|
|||||||
@@ -3,12 +3,14 @@ package com.jeelowcode.module.biz.mapper;
|
|||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.jeelowcode.module.biz.entity.AlibabaWorkOrder;
|
import com.jeelowcode.module.biz.entity.AlibabaWorkOrder;
|
||||||
import com.jeelowcode.tool.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.jeelowcode.tool.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 阿里工单Mapper
|
* 阿里工单Mapper
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface AlibabaWorkOrderMapper extends BaseMapper<AlibabaWorkOrder> {
|
public interface AlibabaWorkOrderMapper extends BaseMapper<AlibabaWorkOrder> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user