From 6ba69a8571f5dcba55c36169a60c92785d5df6e7 Mon Sep 17 00:00:00 2001 From: yang chen Date: Fri, 14 Nov 2025 15:51:11 +0800 Subject: [PATCH] =?UTF-8?q?refactor(biz):=E4=BC=98=E5=8C=96=E9=98=BF?= =?UTF-8?q?=E9=87=8C=E5=B7=A5=E5=8D=95=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=B9=B6=E5=AE=8C=E5=96=84=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 简化 JSON_QUERY 函数调用参数,去除冗余的数组包装操作 -优化 SQL 查询语句中的时间范围过滤条件,提高执行效率- 在 AlibabaWorkOrderMapper 接口中添加 @Mapper 注解以支持 MyBatis 扫描 - 更新单元测试配置文件,适配达梦数据库驱动及连接信息 - 新增工单实体保存测试方法,验证数据插入功能完整性- 移除无效的 Spring Import 注解,精简测试类依赖注入方式 --- .../test/alibaba/WorkOrderSimpleTest.java | 38 +++++- .../test/resources/application-unit-test.yaml | 5 +- .../module/biz/job/AlibabaWorkOrderJob.java | 111 ++++++++++++------ .../biz/mapper/AlibabaWorkOrderMapper.java | 4 +- 4 files changed, 119 insertions(+), 39 deletions(-) diff --git a/jeelowcode-admin/src/test/java/com/jeelowcode/test/alibaba/WorkOrderSimpleTest.java b/jeelowcode-admin/src/test/java/com/jeelowcode/test/alibaba/WorkOrderSimpleTest.java index a1a5578..461ed00 100644 --- a/jeelowcode-admin/src/test/java/com/jeelowcode/test/alibaba/WorkOrderSimpleTest.java +++ b/jeelowcode-admin/src/test/java/com/jeelowcode/test/alibaba/WorkOrderSimpleTest.java @@ -1,23 +1,53 @@ package com.jeelowcode.test.alibaba; +import cn.hutool.core.util.IdUtil; 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.service.impl.AlibabaWorkOrderServiceImpl; +import com.jeelowcode.module.biz.mapper.AlibabaWorkOrderMapper; import com.jeelowcode.tool.framework.test.core.ut.BaseDbAndRedisUnitTest; import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; import javax.annotation.Resource; +import java.time.LocalDateTime; -@Import({AlibabaWorkOrderServiceImpl.class}) public class WorkOrderSimpleTest extends BaseDbAndRedisUnitTest { @Resource - private AlibabaWorkOrderServiceImpl workOrderService; + private AlibabaWorkOrderMapper baseMapper; @Test public void testBuildSql() { 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); + + } + } diff --git a/jeelowcode-admin/src/test/resources/application-unit-test.yaml b/jeelowcode-admin/src/test/resources/application-unit-test.yaml index f5901e9..9859052 100644 --- a/jeelowcode-admin/src/test/resources/application-unit-test.yaml +++ b/jeelowcode-admin/src/test/resources/application-unit-test.yaml @@ -9,22 +9,25 @@ spring: primary: master datasource: master: - # MYSQL数据库 主库,业务库 + # 达梦数据库 主库,业务库 name: jeelowcode_pre_master url: jdbc:dm://127.0.0.1:5236?schema=LOWCODE_MASTER&compatibleMode=oracle&socketTimeout=60000&connectTimeout=30000 username: SYSDBA password: 83kTnuLWPczi + driver-class-name: dm.jdbc.driver.DmDriver jeelowcode: # 从库,框架库 name: jeelowcode_pre_frame url: jdbc:dm://127.0.0.1:5236?schema=LOWCODE_FRAME&compatibleMode=oracle&socketTimeout=60000&connectTimeout=30000 username: SYSDBA password: 83kTnuLWPczi + driver-class-name: dm.jdbc.driver.DmDriver slave: # 日志库单独 name: dev_jeelowcode_log lazy: true # 开启懒加载,保证启动速度 url: jdbc:dm://127.0.0.1:5236?schema=LOWCODE_LOG&compatibleMode=oracle&socketTimeout=60000&connectTimeout=30000 username: SYSDBA password: 83kTnuLWPczi + driver-class-name: dm.jdbc.driver.DmDriver # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 redis: host: 127.0.0.1 # 地址 diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaWorkOrderJob.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaWorkOrderJob.java index ef55b43..28b2069 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaWorkOrderJob.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaWorkOrderJob.java @@ -201,15 +201,12 @@ public class AlibabaWorkOrderJob implements JobHandler { " REPLACE( " + " JSON_QUERY( " + " 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( " + " REPLACE( " + " REPLACE( " + - " JSON_QUERY( " + - " sl.CONTENT, " + - " '$.sopInfo.*' WITH CONDITIONAL WRAPPER, " + - " '[', " + - " ']', " + - " ',' " + - " ), " + - " ']', " + + " JSON_QUERY(sl.CONTENT, '$.sopInfo.*' WITH CONDITIONAL WRAPPER), " + + " '[', " + " '' " + - " ), " + - " '[', " + + " ) ']', " + " '' " + " ), " + " ',' " + @@ -368,15 +358,12 @@ public class AlibabaWorkOrderJob implements JobHandler { " REPLACE( " + " JSON_QUERY( " + " 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( " + " REPLACE( " + " REPLACE( " + - " JSON_QUERY( " + - " sl.CONTENT, " + - " '$.sopInfo.*' WITH CONDITIONAL WRAPPER, " + - " '[', " + - " ']', " + - " ',' " + - " ), " + - " ']', " + + " JSON_QUERY(sl.CONTENT, '$.sopInfo.*' WITH CONDITIONAL WRAPPER), " + + " '[', " + " '' " + - " ), " + - " '[', " + + " ) ']', " + " '' " + " ), " + " ',' " + @@ -438,7 +418,72 @@ public class AlibabaWorkOrderJob implements JobHandler { " ) rwoe " + " GROUP BY " + " 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)) { String formattedStart = LocalDateTimeUtil.format(startTime, FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/mapper/AlibabaWorkOrderMapper.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/mapper/AlibabaWorkOrderMapper.java index ee2dcae..ea71052 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/mapper/AlibabaWorkOrderMapper.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/mapper/AlibabaWorkOrderMapper.java @@ -3,12 +3,14 @@ package com.jeelowcode.module.biz.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jeelowcode.module.biz.entity.AlibabaWorkOrder; import com.jeelowcode.tool.framework.mybatis.core.query.LambdaQueryWrapperX; +import org.apache.ibatis.annotations.Mapper; import java.time.LocalDateTime; /** * 阿里工单Mapper */ +@Mapper public interface AlibabaWorkOrderMapper extends BaseMapper { /** @@ -29,4 +31,4 @@ public interface AlibabaWorkOrderMapper extends BaseMapper { */ LocalDateTime selectMaxUpdateTime(); -} +} \ No newline at end of file