From dd3c0399c9f3c2e70bfd0072cddadcd8d34f18bb Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期日, 24 五月 2026 18:11:21 +0800
Subject: [PATCH] 测试类
---
src/test/java/com/ruoyi/approve/service/impl/ApproveProcessIdModifyTest.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 117 insertions(+), 0 deletions(-)
diff --git a/src/test/java/com/ruoyi/approve/service/impl/ApproveProcessIdModifyTest.java b/src/test/java/com/ruoyi/approve/service/impl/ApproveProcessIdModifyTest.java
new file mode 100644
index 0000000..b8c4f3b
--- /dev/null
+++ b/src/test/java/com/ruoyi/approve/service/impl/ApproveProcessIdModifyTest.java
@@ -0,0 +1,117 @@
+package com.ruoyi.approve.service.impl;
+
+import com.ruoyi.approve.mapper.ApproveNodeMapper;
+import com.ruoyi.approve.mapper.ApproveProcessMapper;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+import java.sql.Timestamp;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+@SpringBootTest
+public class ApproveProcessIdModifyTest {
+
+ @Autowired
+ private JdbcTemplate jdbcTemplate;
+
+ @Autowired
+ private ApproveProcessMapper approveProcessMapper;
+
+ @Autowired
+ private ApproveNodeMapper approveNodeMapper;
+
+ /**
+ * 淇敼瀹℃壒娴佺▼缂栧彿
+ */
+ @Test
+ void testModifyApproveId() {
+ Map<String, String> modifyMap = new LinkedHashMap<>();
+ modifyMap.put("20260523020", "2026-05-09");
+ modifyMap.put("20260523019", "2026-04-29");
+ modifyMap.put("20260523018", "2026-04-16");
+ modifyMap.put("20260523009", "2026-05-07");
+ modifyMap.put("20260523008", "2026-04-11");
+ modifyMap.put("20260523007", "2026-04-10");
+ modifyMap.put("20260523006", "2026-04-07");
+ modifyMap.put("20260523003", "2026-04-07");
+
+ for (Map.Entry<String, String> entry : modifyMap.entrySet()) {
+ processOne(entry.getKey(), entry.getValue());
+ }
+ System.out.println("鍏ㄩ儴瀹屾垚锛�");
+ }
+
+ private void processOne(String oldApproveId, String targetDateStr) {
+ LocalDate targetDate = LocalDate.parse(targetDateStr);
+ String datePrefix = targetDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+
+ String maxId = jdbcTemplate.queryForObject(
+ "SELECT MAX(approve_id) FROM approve_process WHERE approve_id LIKE ?",
+ String.class, datePrefix + "%");
+
+ long nextSeq = 1;
+ if (maxId != null && maxId.length() >= 11) {
+ nextSeq = Long.parseLong(maxId.substring(8)) + 1;
+ }
+ String newApproveId = datePrefix + String.format("%03d", nextSeq);
+
+ System.out.println("鏃ф壒鍙�: " + oldApproveId + " -> 鏂版壒鍙�: " + newApproveId);
+
+ List<Map<String, Object>> processList = jdbcTemplate.queryForList(
+ "SELECT * FROM approve_process WHERE approve_id = ?", oldApproveId);
+
+ if (processList.isEmpty()) {
+ System.out.println(" 鈿� 鏈壘鍒拌褰曪紝璺宠繃");
+ return;
+ }
+
+ Map<String, Object> process = processList.get(0);
+
+ Timestamp newApproveTime = replaceDate(process.get("approve_time"), targetDate);
+ Timestamp newApproveOverTime = replaceDate(process.get("approve_over_time"), targetDate);
+ Timestamp newCreateTime = replaceDate(process.get("create_time"), targetDate);
+
+ jdbcTemplate.update(
+ "UPDATE approve_process SET approve_id = ?, approve_time = ?, approve_over_time = ?, create_time = ? WHERE approve_id = ?",
+ newApproveId, newApproveTime, newApproveOverTime, newCreateTime, oldApproveId);
+ System.out.println(" 鉁� approve_process 宸叉洿鏂�");
+
+ List<Map<String, Object>> nodeList = jdbcTemplate.queryForList(
+ "SELECT * FROM approve_node WHERE approve_process_id = ?", oldApproveId);
+
+ if (!nodeList.isEmpty()) {
+ Map<String, Object> node = nodeList.get(0);
+
+ Timestamp newNodeTime = replaceDate(node.get("approve_node_time"), targetDate);
+ Timestamp newNodeCreateTime = replaceDate(node.get("create_time"), targetDate);
+ Timestamp newNodeUpdateTime = replaceDate(node.get("update_time"), targetDate);
+
+ jdbcTemplate.update(
+ "UPDATE approve_node SET approve_process_id = ?, approve_node_time = ?, create_time = ?, update_time = ? WHERE approve_process_id = ?",
+ newApproveId, newNodeTime, newNodeCreateTime, newNodeUpdateTime, oldApproveId);
+ System.out.println(" 鉁� approve_node 宸叉洿鏂� (" + nodeList.size() + " 鏉�)");
+ } else {
+ System.out.println(" - approve_node 鏃犺褰�");
+ }
+ }
+
+ private static Timestamp replaceDate(Object dateObj, LocalDate targetDate) {
+ if (dateObj == null) return null;
+ LocalDateTime ldt;
+ if (dateObj instanceof Timestamp ts) {
+ ldt = ts.toLocalDateTime();
+ } else if (dateObj instanceof LocalDateTime dt) {
+ ldt = dt;
+ } else {
+ return null;
+ }
+ return Timestamp.valueOf(LocalDateTime.of(targetDate, ldt.toLocalTime()));
+ }
+}
--
Gitblit v1.9.3