diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index a86e765..0d54360 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -23,6 +23,23 @@
mysql-connector-j
+
+
+ com.aspose
+ aspose-words
+ 15.8.0
+
+
+ com.aspose
+ aspose-cells
+ 8.5.2
+
+
+ com.aspose
+ aspose-slides
+ 15.9.0
+
+
diff --git a/ruoyi-admin/src/main/java/org/dromara/util/FileToPdfUtils.java b/ruoyi-admin/src/main/java/org/dromara/util/FileToPdfUtils.java
new file mode 100644
index 0000000..0b5b640
--- /dev/null
+++ b/ruoyi-admin/src/main/java/org/dromara/util/FileToPdfUtils.java
@@ -0,0 +1,212 @@
+package org.dromara.util;
+
+import com.aspose.cells.Workbook;
+import com.aspose.slides.Presentation;
+import com.aspose.slides.SaveFormat;
+import com.aspose.words.Document;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+
+/**
+ * 文件转pdf工具类 linux 服务器需要安装字体不然是乱码
+ *
+ * @author liuhaomin
+ * @date 2020/6/30
+ */
+public class FileToPdfUtils {
+ /**
+ * 文件转换
+ *
+ * @param source:源文件地址 如:C://test/test.doc,target:转换后文件路径 如 C://test/pdf
+ * @return
+ */
+ public static String officeToPdf(String source, String target) {
+ File file = new File(source);
+ // 文件名字
+ String fileName = file.getName();
+ //office文档转pdf
+ String fileExt = source.substring(source.lastIndexOf(".") + 1);
+ if ("doc".equals(fileExt) || "docx".equals(fileExt)) {
+ doc2pdf(source, target, fileExt);
+ }
+ if ("xls".equals(fileExt) || "xlsx".equals(fileExt)) {
+ excel2pdf(source, target, fileExt);
+ }
+ if ("ppt".equals(fileExt) || "pptx".equals(fileExt)) {
+ ppt2pdf(source, target, fileExt);
+ }
+
+ if ("doc,docx,xls,xlsx,ppt,pptx".indexOf(fileExt) > 0) {
+ return target + File.separator + (fileName.replace(fileExt, "pdf"));
+ }
+ return null;
+ }
+
+ /**
+ * @description: 验证ExcelLicense
+ * @params:
+ * @return:
+ * @author: com.liuhm
+ * @Date: 2019/10/10 13:40
+ */
+ public static boolean getExcelLicense() {
+ boolean result = false;
+ try {
+ // license.xml应放在..\WebRoot\WEB-INF\classes路径下
+ InputStream is = FileToPdfUtils.class.getClassLoader().getResourceAsStream("license.xml");
+ com.aspose.cells.License aposeLic = new com.aspose.cells.License();
+ aposeLic.setLicense(is);
+ result = true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+ /**
+ * @description: 验证PPTtlLicense
+ * @params:
+ * @return:
+ * @author: com.liuhm
+ * @Date: 2019/10/10 13:40
+ */
+ public static boolean getPPTLicense() {
+ boolean result = false;
+ try {
+ // license.xml应放在..\WebRoot\WEB-INF\classes路径下
+ InputStream is = FileToPdfUtils.class.getClassLoader().getResourceAsStream("license.xml");
+ com.aspose.slides.License aposeLic = new com.aspose.slides.License();
+ aposeLic.setLicense(is);
+ result = true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+ /**
+ * @description: 验证License
+ * @params:
+ * @return:
+ * @author: com.liuhm
+ * @Date: 2019/10/10 13:40
+ */
+ public static boolean getDocLicense() {
+ boolean result = false;
+ try {
+ // license.xml应放在..\WebRoot\WEB-INF\classes路径下
+ InputStream is = FileToPdfUtils.class.getClassLoader().getResourceAsStream("license.xml");
+ com.aspose.words.License aposeLic = new com.aspose.words.License();
+ aposeLic.setLicense(is);
+ result = true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+ /**
+ * @description: excel转pdf
+ * @params: source:源文件地址,target:转换后文件路径,fileExt:后缀
+ * @return:
+ * @author: com.liuhm
+ * @Date: 2019/10/10 13:41
+ */
+ public static void excel2pdf(String source, String target, String fileExt) {
+ // 验证License 若不验证则转化出的pdf文档会有水印产生
+ if (!getExcelLicense()) {
+ return;
+ }
+ try {
+ // 原始excel路径
+ Workbook wb = new Workbook(source);
+ //验证路径
+ try {
+ if (!(new File(target).isDirectory())) {
+ new File(target).mkdirs();
+ }
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ }
+ // 文件名字
+ String fileName = new File(source).getName();
+ // 输出路径
+ File pdfFile = new File(target + File.separator + (fileName.replace(fileExt, "pdf")));
+ FileOutputStream fileOS = new FileOutputStream(pdfFile);
+ wb.save(fileOS, com.aspose.cells.SaveFormat.PDF);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * @description: ppt转pdf
+ * @params: source:源文件地址,target:转换后文件路径,fileExt:后缀
+ * @return:
+ * @author: com.liuhm
+ * @Date: 2019/10/10 13:46
+ */
+ public static void ppt2pdf(String source, String target, String fileExt) {
+ // 验证License 若不验证则转化出的pdf文档会有水印产生
+ if (!getPPTLicense()) {
+ return;
+ }
+ try {
+ //验证路径
+ try {
+ if (!(new File(target).isDirectory())) {
+ new File(target).mkdirs();
+ }
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ }
+ // 文件名字
+ String fileName = new File(source).getName();
+ //新建一个空白pdf文档
+ File file = new File(target + File.separator + (fileName.replace(fileExt, "pdf")));
+ //输入pdf路径
+ Presentation pres = new Presentation(source);
+ FileOutputStream fileOS = new FileOutputStream(file);
+ pres.save(fileOS, SaveFormat.Pdf);
+ fileOS.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * @description: doc转pdf
+ * @params: source:源文件地址,target:转换后文件路径,fileExt:后缀
+ * @return:
+ * @author: com.liuhm
+ * @Date: 2019/10/10 13:46
+ */
+ public static void doc2pdf(String source, String target, String fileExt) {
+ // 验证License 若不验证则转化出的pdf文档会有水印产生
+ if (!getDocLicense()) {
+ return;
+ }
+ try {
+ //新建一个空白pdf文档
+ try {
+ if (!(new File(target).isDirectory())) {
+ new File(target).mkdirs();
+ }
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ }
+ // 文件名字
+
+ String fileName = new File(source).getName();
+ // 输出路径
+ File file = new File(target + File.separator + (fileName.replace(fileExt, "pdf")));
+ FileOutputStream os = new FileOutputStream(file);
+ Document doc = new Document(source);
+ doc.save(os, com.aspose.words.SaveFormat.PDF);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/ShowFileController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/ShowFileController.java
new file mode 100644
index 0000000..18e714c
--- /dev/null
+++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/ShowFileController.java
@@ -0,0 +1,128 @@
+package org.dromara.web.controller;
+
+import cn.dev33.satoken.annotation.SaIgnore;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.io.IOUtils;
+import org.dromara.common.core.config.RuoYiConfig;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.core.utils.file.FileUtils;
+import org.dromara.util.FileToPdfUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLConnection;
+import java.net.URLEncoder;
+
+/**
+ * 首页
+ *
+ * @author Lion Li
+ */
+@SaIgnore
+@RequiredArgsConstructor
+@RestController
+public class ShowFileController {
+
+ /**
+ * 系统基础配置
+ */
+ private final RuoYiConfig ruoyiConfig;
+
+
+ /**
+ * 文件预览
+ * @param filePath
+ * @param request
+ * @param response
+ * @throws IOException
+ */
+ @GetMapping("/showFile")
+ @ResponseBody
+ public void showFile(String filePath, HttpServletRequest request, HttpServletResponse response) throws IOException {
+ //源文件路径
+ String sourcePath = filePath;
+ //pdf文件路径
+ String pdfPath = "D:/ruoyi/uploadPath/pdf/";;
+ //获取文件后缀判断是否转换pdf
+ int index = filePath.lastIndexOf(".");
+ String fileType = filePath.substring(index + 1);
+ String toPdfSuffix = "doc,docx,xls,xlsx,ppt,pptx";
+
+
+ try {
+ String filename = filePath.substring(filePath.lastIndexOf("/")+1, index);
+ String pdffilepath = pdfPath + filename + ".pdf";
+ File pdfFile = new File(pdffilepath);
+ if (pdfFile.exists()){
+ InputStream is = new FileInputStream(pdfFile);
+ showPdf(is, pdffilepath, request, response);
+ }else {
+// if (toPdfSuffix.indexOf(fileType) >= 0) {
+ // pdfPath = sourcePath.substring(0, index) + ".pdf";
+
+ //源文件转换pdf
+ FileToPdfUtils.officeToPdf(sourcePath, pdfPath);
+ File newPdfFile = new File(pdffilepath);
+ InputStream is = new FileInputStream(newPdfFile);
+ showPdf(is, pdffilepath, request, response);
+// } else {
+// //不用转换,直接预览
+// File newPdfFile = new File(filePath);
+// InputStream is = new FileInputStream(newPdfFile);
+// showPdf(is, filePath, request, response);
+// }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+// finally {
+// //最后删除生成的pdf文件
+// FileUtils.deleteFile(pdfPath);
+// }
+
+ }
+
+ /**
+ * 文件预览
+ * @param is
+ * @param fileKey
+ * @param request
+ * @param response
+ * @throws IOException
+ */
+ public void showPdf(InputStream is, String fileKey, HttpServletRequest request, HttpServletResponse response) throws IOException {
+ //根据文件名获取 MIME 类型
+ int idx = fileKey.lastIndexOf(".");
+ String suffix = fileKey.substring(idx);
+ String[] fileKeys = fileKey.split("/");
+ String fileName = fileKeys[fileKeys.length - 1];
+// String contentType = FileContentType.SUFFIX_TYPE.get(suffix);
+ String contentType = URLConnection.guessContentTypeFromName(fileKey);
+ //inline表示直接预览
+ String userAgent = request.getHeader("USER-AGENT");
+ String contentDisposition = "";
+ if(StringUtils.contains(userAgent, "MSIE")||StringUtils.contains(userAgent, "Trident") || StringUtils.contains(userAgent,"Edge")){
+ //IE 浏览器
+ contentDisposition = "inline;filename=" + URLEncoder.encode(fileName,"UTF8");
+ }else {
+ //其他浏览器
+ contentDisposition = "inline;filename=" + new String(fileName.getBytes("UTF-8"),"ISO8859-1");
+ }
+ // 设置头
+ response.setHeader("Content-Disposition",contentDisposition);
+ response.setContentType(contentType);
+ // 获取绑定了客户端的流
+ ServletOutputStream output = response.getOutputStream();
+ // 把输入流中的数据写入到输出流中
+ IOUtils.copy(is,output);
+ is.close();
+ }
+}
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index dcb5eb8..a8980e0 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -49,9 +49,9 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
- url: jdbc:mysql://localhost:3306/ry-vue-plus-abm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
+ url: jdbc:mysql://192.168.0.49:3306/xxbsdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root
- password: 1234
+ password: root
# type: ${spring.datasource.type}
# driverClassName: org.postgresql.Driver
# url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml
index 80c1f96..d88cf04 100644
--- a/ruoyi-admin/src/main/resources/application-prod.yml
+++ b/ruoyi-admin/src/main/resources/application-prod.yml
@@ -52,7 +52,7 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
- url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
+ url: jdbc:mysql://192.168.0.49:3306/xxbsdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root
password: root
# # 从库数据源
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index c977aeb..3142f4e 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -194,7 +194,7 @@ springdoc:
# 标题
title: '标题:${ruoyi.name}多租户管理系统_接口文档'
# 描述
- description: '描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...'
+ description: '.'
# 版本
version: '版本号: ${ruoyi.version}'
# 作者信息
@@ -225,10 +225,11 @@ springdoc:
# 防止XSS攻击
xss:
# 过滤开关
- enabled: true
+ enabled: false
# 排除链接(多个用逗号分隔)
excludeUrls:
- /system/notice
+ - /biz
- /warm-flow/save-xml
# 全局线程池相关配置
diff --git a/ruoyi-admin/src/main/resources/license.xml b/ruoyi-admin/src/main/resources/license.xml
new file mode 100644
index 0000000..ecd46c1
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/license.xml
@@ -0,0 +1,13 @@
+
+
+
+ Aspose.Total for Java
+ Aspose.Words for Java
+
+ Enterprise
+ 20991231
+ 20991231
+ 8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7
+
+ sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=
+
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DeptDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DeptDTO.java
index 65c012f..437248a 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DeptDTO.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DeptDTO.java
@@ -22,12 +22,12 @@ public class DeptDTO implements Serializable {
/**
* 部门ID
*/
- private Long deptId;
+ private String deptId;
/**
* 父部门ID
*/
- private Long parentId;
+ private String parentId;
/**
* 部门名称
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/PostDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/PostDTO.java
index 7536ee3..6f5f387 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/PostDTO.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/PostDTO.java
@@ -26,7 +26,7 @@ public class PostDTO implements Serializable {
/**
* 部门id
*/
- private Long deptId;
+ private String deptId;
/**
* 岗位编码
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/TaskAssigneeDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/TaskAssigneeDTO.java
index 85893e1..85644ff 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/TaskAssigneeDTO.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/TaskAssigneeDTO.java
@@ -66,6 +66,62 @@ public class TaskAssigneeDTO implements Serializable {
createTimeMapper.apply(item)
)).collect(Collectors.toList());
}
+ /**
+ * 将源列表转换为 TaskHandler 列表
+ *
+ * @param 通用类型
+ * @param sourceList 待转换的源列表
+ * @param storageId 提取 storageId 的函数
+ * @param handlerCode 提取 handlerCode 的函数
+ * @param handlerName 提取 handlerName 的函数
+ * @param groupName 提取 groupName 的函数
+ * @param createTimeMapper 提取 createTime 的函数
+ * @return 转换后的 TaskHandler 列表
+ */
+ public static List convertToHandlerList2(
+ List sourceList,
+ Function storageId,
+ Function handlerCode,
+ Function handlerName,
+ Function groupName,
+ Function createTimeMapper) {
+ return sourceList.stream()
+ .map(item -> new TaskHandler(
+ String.valueOf(storageId.apply(item)),
+ handlerCode.apply(item),
+ handlerName.apply(item),
+ groupName != null ? String.valueOf(groupName.apply(item)) : null,
+ createTimeMapper.apply(item)
+ )).collect(Collectors.toList());
+ }
+ /**
+ * 将源列表转换为 TaskHandler 列表
+ *
+ * @param 通用类型
+ * @param sourceList 待转换的源列表
+ * @param storageId 提取 storageId 的函数
+ * @param handlerCode 提取 handlerCode 的函数
+ * @param handlerName 提取 handlerName 的函数
+ * @param groupName 提取 groupName 的函数
+ * @param createTimeMapper 提取 createTime 的函数
+ * @return 转换后的 TaskHandler 列表
+ */
+ public static List convertToHandlerList3(
+ List sourceList,
+ Function storageId,
+ Function handlerCode,
+ Function handlerName,
+ Function groupName,
+ Function createTimeMapper) {
+ return sourceList.stream()
+ .map(item -> new TaskHandler(
+ String.valueOf(storageId.apply(item)),
+ handlerCode.apply(item),
+ handlerName.apply(item),
+ groupName != null ? String.valueOf(groupName.apply(item)) : null,
+ createTimeMapper.apply(item)
+ )).collect(Collectors.toList());
+ }
@Data
@NoArgsConstructor
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java
index cb5def9..9d96851 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java
@@ -28,7 +28,7 @@ public class UserDTO implements Serializable {
/**
* 部门ID
*/
- private Long deptId;
+ private String deptId;
/**
* 用户账号
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java
index 338d4d7..0c11a8c 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java
@@ -35,7 +35,7 @@ public class LoginUser implements Serializable {
/**
* 部门ID
*/
- private Long deptId;
+ private String deptId;
/**
* 部门类别编码
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java
index f93d177..6b30435 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java
@@ -25,7 +25,7 @@ public interface DeptService {
* @param deptId 部门ID,用于指定需要查询的部门
* @return 返回该部门的负责人ID
*/
- Long selectDeptLeaderById(Long deptId);
+ Long selectDeptLeaderById(String deptId);
/**
* 查询部门
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java
index 67cd54f..b441e90 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java
@@ -81,7 +81,7 @@ public interface UserService {
* @param deptIds 部门ids
* @return 用户
*/
- List selectUsersByDeptIds(List deptIds);
+ List selectUsersByDeptIds(List deptIds);
/**
* 通过岗位ID查询用户
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/Helper.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/Helper.java
new file mode 100644
index 0000000..927345b
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/Helper.java
@@ -0,0 +1,383 @@
+package org.dromara.common.core.utils;
+
+
+import cn.hutool.core.convert.Convert;
+import jakarta.servlet.http.HttpServletRequest;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class Helper {
+
+ public static String ManagerDeptID(Long deptid, String managerDeptid){
+ if (managerDeptid!=null && !managerDeptid.trim().equals("")){
+ return Helper.NStr(managerDeptid.trim());
+ } else
+ return Helper.NStr(deptid);
+ }
+
+ /**
+ * 去除组织机构后面0 返回组织机构前缀
+ * @param deptid 组织机构代码
+ * @return 返回组织机构前缀
+ */
+ public static String PrefixDeptid(String deptid){
+ if (deptid==null || deptid.equals("null")) return "";
+
+ while(deptid.substring(deptid.length()-2).equals("00")){
+ deptid = deptid.substring(0, deptid.length()-2);
+ }
+ return deptid;
+ }
+
+ public static boolean isEmpty(Object obj){
+ String str = NStr(obj, "");
+ if("".equals(str)) {
+ return true;
+ }else {
+ return false;
+ }
+ }
+
+ public static String NStr(Object obj){
+ return NStr(obj, "");
+ }
+ public static String NStr(Object obj, String default_value){
+ try{
+ return obj == null || obj == "null" || obj == "undefined" || "undefined".equals(obj) || obj == "" ? default_value : obj.toString();
+ }catch (Exception ex){
+ return default_value;
+ }
+ }
+ public static int FInt(Object obj){
+ return FInt(obj, 0);
+ }
+ public static int FInt(Object obj, int default_value){
+ try{
+ if (obj==null) return default_value;
+ return Convert.toInt(obj);
+ }catch (Exception e){
+ return default_value;
+ }
+ }
+
+ public static Double FDouble(Object obj){
+ return FDouble(obj,0.00);
+ }
+ public static Double FDouble(Object obj, Double doub){
+ try{
+ return Convert.toDouble(obj);
+ }catch (Exception e){
+ return doub;
+ }
+ }
+
+
+ public static Long FLong(Object obj){
+ return FLong(obj, 0L);
+ }
+ public static Long FLong(Object obj, Long default_value){
+ try{
+ if (obj==null) return default_value;
+ return Convert.toLong(obj);
+ }catch (Exception e){
+ return default_value;
+ }
+ }
+
+ /**
+ *校验邮箱格式
+ */
+ public static boolean checkEmail(String value){
+ boolean flag=false;
+ Pattern p1 = null;
+ Matcher m = null;
+ p1 = Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
+ m = p1.matcher(value);
+ flag = m.matches();
+ return flag;
+ }
+ /**
+ * @param checkType 校验类型:0校验手机号码,1校验座机号码,2两者都校验满足其一就可
+ * @param phoneNum
+ * */
+ public static boolean validPhoneNum(String checkType,String phoneNum){
+ boolean flag=false;
+ Pattern p1 = null;
+ Pattern p2 = null;
+ Matcher m = null;
+ p1 = Pattern.compile("^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\\d{8})?$");
+ p2 = Pattern.compile("^(0[0-9]{2,3}\\-)?([1-9][0-9]{6,7})$");
+ if("0".equals(checkType)){
+ System.out.println(phoneNum.length());
+ if(phoneNum.length()!=11){
+ return false;
+ }else{
+ m = p1.matcher(phoneNum);
+ flag = m.matches();
+ }
+ }else if("1".equals(checkType)){
+ if(phoneNum.length()<11||phoneNum.length()>=16){
+ return false;
+ }else{
+ m = p2.matcher(phoneNum);
+ flag = m.matches();
+ }
+ }else if("2".equals(checkType)){
+ if(!((phoneNum.length() == 11 && p1.matcher(phoneNum).matches())||(phoneNum.length()<16&&p2.matcher(phoneNum).matches()))){
+ return false;
+ }else{
+ flag = true;
+ }
+ }
+ return flag;
+ }
+ /**
+ * 功能:身份证的有效验证
+ */
+ public static boolean IDCardValidate(String IDStr) {
+ IDStr = IDStr.trim().toUpperCase();
+ String errorInfo = "";// 记录错误信息
+ String[] ValCodeArr = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" };
+ String[] Wi = { "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2" };
+ String Ai = "";
+ // ================ 号码的长度 15位或18位 ================
+ if (IDStr.length() != 15 && IDStr.length() != 18) {
+ //身份证号码长度应该为15位或18位
+ return false;
+ }
+ // =======================(end)========================
+
+ // ================ 数字 除最后以为都为数字 ================
+ if (IDStr.length() == 18) {
+ Ai = IDStr.substring(0, 17);
+ } else if (IDStr.length() == 15) {
+ Ai = IDStr.substring(0, 6) + "19" + IDStr.substring(6, 15);
+ }
+ if (isNumeric(Ai) == false) {
+ //身份证15位号码都应为数字 ; 18位号码除最后一位外,都应为数字。
+ return false;
+ }
+ // =======================(end)========================
+
+ // ================ 出生年月是否有效 ================
+ String strYear = Ai.substring(6, 10);// 年份
+ String strMonth = Ai.substring(10, 12);// 月份
+ String strDay = Ai.substring(12, 14);// 月份
+ if (isDataFormat(strYear + "-" + strMonth + "-" + strDay) == false) {
+ //身份证生日无效。
+ return false;
+ }
+ GregorianCalendar gc = new GregorianCalendar();
+ SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
+ try {
+ if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) > 150
+ || (gc.getTime().getTime() - s.parse(strYear + "-" + strMonth + "-" + strDay).getTime()) < 0) {
+ //身份证生日不在有效范围。
+ return false;
+ }
+ }catch (Exception ex){
+ return false;
+ }
+ if (Integer.parseInt(strMonth) > 12 || Integer.parseInt(strMonth) == 0) {
+ //身份证月份无效
+ return false;
+ }
+ if (Integer.parseInt(strDay) > 31 || Integer.parseInt(strDay) == 0) {
+ //身份证日期无效
+ return false;
+ }
+ // =====================(end)=====================
+
+ // ================ 地区码时候有效 ================
+ Hashtable h = GetAreaCode();
+ if (h.get(Ai.substring(0, 2)) == null) {
+ //身份证地区编码错误。
+ return false;
+ }
+ // ==============================================
+
+ // ================ 判断最后一位的值 ================
+ int TotalmulAiWi = 0;
+ for (int i = 0; i < 17; i++) {
+ TotalmulAiWi = TotalmulAiWi + Integer.parseInt(String.valueOf(Ai.charAt(i))) * Integer.parseInt(Wi[i]);
+ }
+ int modValue = TotalmulAiWi % 11;
+ String strVerifyCode = ValCodeArr[modValue];
+ Ai = Ai + strVerifyCode;
+
+ if (IDStr.length() == 18) {
+ if (Ai.equals(IDStr) == false) {
+ //身份证无效,不是合法的身份证号码
+ return false;
+ }
+ } else {
+ return true;
+ }
+ // =====================(end)=====================
+ return true;
+ }
+
+ /**
+ * 功能:设置地区编码
+ */
+ private static Hashtable GetAreaCode() {
+ Hashtable hashtable = new Hashtable();
+ hashtable.put("11", "北京");
+ hashtable.put("12", "天津");
+ hashtable.put("13", "河北");
+ hashtable.put("14", "山西");
+ hashtable.put("15", "内蒙古");
+ hashtable.put("21", "辽宁");
+ hashtable.put("22", "吉林");
+ hashtable.put("23", "黑龙江");
+ hashtable.put("31", "上海");
+ hashtable.put("32", "江苏");
+ hashtable.put("33", "浙江");
+ hashtable.put("34", "安徽");
+ hashtable.put("35", "福建");
+ hashtable.put("36", "江西");
+ hashtable.put("37", "山东");
+ hashtable.put("41", "河南");
+ hashtable.put("42", "湖北");
+ hashtable.put("43", "湖南");
+ hashtable.put("44", "广东");
+ hashtable.put("45", "广西");
+ hashtable.put("46", "海南");
+ hashtable.put("50", "重庆");
+ hashtable.put("51", "四川");
+ hashtable.put("52", "贵州");
+ hashtable.put("53", "云南");
+ hashtable.put("54", "西藏");
+ hashtable.put("61", "陕西");
+ hashtable.put("62", "甘肃");
+ hashtable.put("63", "青海");
+ hashtable.put("64", "宁夏");
+ hashtable.put("65", "新疆");
+ hashtable.put("71", "台湾");
+ hashtable.put("81", "香港");
+ hashtable.put("82", "澳门");
+ hashtable.put("91", "国外");
+ return hashtable;
+ }
+
+ /**
+ * 验证日期字符串是否是YYYY-MM-DD格式
+ */
+ public static boolean isDataFormat(String str) {
+ boolean flag = false;
+ // String
+ // regxStr="[1-9][0-9]{3}-[0-1][0-2]-((0[1-9])|([12][0-9])|(3[01]))";
+ String regxStr = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$";
+ Pattern pattern1 = Pattern.compile(regxStr);
+ Matcher isNo = pattern1.matcher(str);
+ if (isNo.matches()) {
+ flag = true;
+ }
+ return flag;
+ }
+
+ /**
+ * 功能:判断字符串是否为数字
+ */
+ private static boolean isNumeric(String str) {
+ Pattern pattern = Pattern.compile("[0-9]*");
+ Matcher isNum = pattern.matcher(str);
+ if (isNum.matches()) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public static String getIP(HttpServletRequest request){
+ String ip = request.getHeader("x-forwarded-for");
+ if (ip!=null && ip.length()!=0 && !"unknown".equalsIgnoreCase(ip))
+ if (ip.indexOf(",")>=0) ip = ip.split(",")[0];
+
+ if (ip==null || ip.length()==0 || "unknown".equalsIgnoreCase(ip))
+ ip = request.getHeader("Proxy-Client-IP");
+ if (ip==null || ip.length()==0 || "unknown".equalsIgnoreCase(ip))
+ ip = request.getHeader("WL-Proxy-Client-IP");
+ if (ip==null || ip.length()==0 || "unknown".equalsIgnoreCase(ip))
+ ip = request.getHeader("HTTP_CLIENT_IP");
+ if (ip==null || ip.length()==0 || "unknown".equalsIgnoreCase(ip))
+ ip = request.getHeader("HTTP_X_FORWARDED_FOR");
+ if (ip==null || ip.length()==0 || "unknown".equalsIgnoreCase(ip))
+ ip = request.getHeader("X-Real-IP");
+ if (ip==null || ip.length()==0 || "unknown".equalsIgnoreCase(ip))
+ ip = request.getRemoteAddr();
+ return ip;
+ }
+
+ public static Map getBirAgeSex(String certificateNo) {
+ String birthday = "";
+ String age = "";
+ String sexCode = "";
+
+ int year = Calendar.getInstance().get(Calendar.YEAR);
+ char[] number = certificateNo.toCharArray();
+ boolean flag = true;
+ if (number.length == 15) {
+ for (int x = 0; x < number.length; x++) {
+ if (!flag)
+ return new HashMap();
+ flag = Character.isDigit(number[x]);
+ }
+ } else if (number.length == 18) {
+ for (int x = 0; x < number.length - 1; x++) {
+ if (!flag)
+ return new HashMap();
+ flag = Character.isDigit(number[x]);
+ }
+ }
+ if (flag && certificateNo.length() == 15) {
+ birthday = "19" + certificateNo.substring(6, 8) + "-" + certificateNo.substring(8, 10) + "-"
+ + certificateNo.substring(10, 12);
+ sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 3, certificateNo.length()))
+ % 2 == 0 ? "女" : "男";
+ age = (year - Integer.parseInt("19" + certificateNo.substring(6, 8))) + "";
+ } else if (flag && certificateNo.length() == 18) {
+ birthday = certificateNo.substring(6, 10) + "-" + certificateNo.substring(10, 12) + "-"
+ + certificateNo.substring(12, 14);
+ sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 4, certificateNo.length() - 1))
+ % 2 == 0 ? "女" : "男";
+ age = (year - Integer.parseInt(certificateNo.substring(6, 10))) + "";
+ }
+ Map map = new HashMap();
+ map.put("birthday", birthday);
+ map.put("age", age);
+ map.put("sex", sexCode);
+ return map;
+ }
+
+ /**
+ * 根据身份证号码获取出生日期
+ * @param idcard 身份证号码
+ * @return 返回出生日期
+ */
+ public static String getBirthdayByIdcard(String idcard){
+ Map map = getBirAgeSex(idcard);
+ return NStr(map.get("birthday"));
+ }
+
+ /**
+ * 根据身份证号码获取性别
+ * @param idcard 身份证号码
+ * @return 返回性别
+ */
+ public static String getGenderByIdcard(String idcard){
+ Map map = getBirAgeSex(idcard);
+ return NStr(map.get("sex"));
+ }
+
+ public static String generateOrderSn(Long userId) {
+ String now = DateUtils.dateTimeNow();
+ Random ran = new Random();
+ String orderSn = userId + "_" + now + String.format("%03d", ran.nextInt(999));
+ return orderSn;
+ }
+}
+
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java
index 9d7f502..aa3c139 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java
@@ -34,7 +34,7 @@ public class BaseEntity implements Serializable {
* 创建部门
*/
@TableField(fill = FieldFill.INSERT,exist = false)
- private Long createDept;
+ private String createDept;
/**
* 创建者
diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java
index e2c9236..652da20 100644
--- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java
+++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java
@@ -113,8 +113,8 @@ public class LoginHelper {
/**
* 获取部门ID
*/
- public static Long getDeptId() {
- return Convert.toLong(getExtra(DEPT_KEY));
+ public static String getDeptId() {
+ return getExtra(DEPT_KEY).toString();
}
/**
diff --git a/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml b/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml
index 32a2cc4..b1bf5df 100644
--- a/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml
+++ b/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml
@@ -2,7 +2,7 @@ spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
+ url: jdbc:mysql://192.168.0.49:3306/xxbsdb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: root
hikari:
diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemo.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemo.java
index d3af0c9..5e2acb9 100644
--- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemo.java
+++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemo.java
@@ -30,7 +30,7 @@ public class TestDemo extends TenantEntity {
/**
* 部门id
*/
- private Long deptId;
+ private String deptId;
/**
* 用户id
diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestTree.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestTree.java
index fd68253..5d1a61c 100644
--- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestTree.java
+++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestTree.java
@@ -38,7 +38,7 @@ public class TestTree extends TenantEntity {
/**
* 部门id
*/
- private Long deptId;
+ private String deptId;
/**
* 用户id
diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoBo.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoBo.java
index 8134677..8c8d1a7 100644
--- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoBo.java
+++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoBo.java
@@ -33,7 +33,7 @@ public class TestDemoBo extends BaseEntity {
* 部门id
*/
@NotNull(message = "部门id不能为空", groups = {AddGroup.class, EditGroup.class})
- private Long deptId;
+ private String deptId;
/**
* 用户id
diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoImportVo.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoImportVo.java
index c066118..ec8b528 100644
--- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoImportVo.java
+++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoImportVo.java
@@ -20,7 +20,7 @@ public class TestDemoImportVo {
*/
@NotNull(message = "部门id不能为空")
@ExcelProperty(value = "部门id")
- private Long deptId;
+ private String deptId;
/**
* 用户id
diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestTreeBo.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestTreeBo.java
index 1bbac0e..4568383 100644
--- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestTreeBo.java
+++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestTreeBo.java
@@ -37,7 +37,7 @@ public class TestTreeBo extends BaseEntity {
* 部门id
*/
@NotNull(message = "部门id不能为空", groups = {AddGroup.class, EditGroup.class})
- private Long deptId;
+ private String deptId;
/**
* 用户id
diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestDemoVo.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestDemoVo.java
index e7ea807..aef448d 100644
--- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestDemoVo.java
+++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestDemoVo.java
@@ -40,7 +40,7 @@ public class TestDemoVo implements Serializable {
*/
@ExcelRequired
@ExcelProperty(value = "部门id")
- private Long deptId;
+ private String deptId;
/**
* 用户id
diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestTreeVo.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestTreeVo.java
index 58b4bdb..8449178 100644
--- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestTreeVo.java
+++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestTreeVo.java
@@ -40,7 +40,7 @@ public class TestTreeVo implements Serializable {
* 部门id
*/
@ExcelProperty(value = "部门id")
- private Long deptId;
+ private String deptId;
/**
* 用户id
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DeptExtractionJobExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DeptExtractionJobExecutor.java
index 8b55dcd..e945f8c 100644
--- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DeptExtractionJobExecutor.java
+++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DeptExtractionJobExecutor.java
@@ -97,8 +97,8 @@ public class DeptExtractionJobExecutor {
// 2. 将组织机构名称格式统一(有的为合肥市公安局,有的为安徽省宿州市公安局)
if (deptName.startsWith("安徽省") && !deptId.equals("340000000000")){deptName = deptName.substring(3);}
// 将抽取到的组织机构信息放入集合中
- sysDept.setDeptId(Long.valueOf(deptId));
- sysDept.setParentId(Long.valueOf(parentId));
+ sysDept.setDeptId((deptId));
+ sysDept.setParentId((parentId));
sysDept.setAncestors(newAncestors);
sysDept.setDeptName(deptName);
sysDept.setShortName(shortName);
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizCategoryController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizCategoryController.java
new file mode 100644
index 0000000..8b24e5c
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizCategoryController.java
@@ -0,0 +1,114 @@
+package org.dromara.biz.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.biz.domain.vo.BizCategoryVo;
+import org.dromara.biz.domain.bo.BizCategoryBo;
+import org.dromara.biz.service.IBizCategoryService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 类别
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/biz/category")
+public class BizCategoryController extends BaseController {
+
+ private final IBizCategoryService bizCategoryService;
+
+ /**
+ * 查询所有类别列表
+ */
+ @SaCheckPermission("biz:category:list")
+ @GetMapping("/alllist")
+ public R> alllist(BizCategoryBo bo) {
+ return R.ok(bizCategoryService.queryList(bo));
+ }
+
+ /**
+ * 查询类别列表
+ */
+ @SaCheckPermission("biz:category:list")
+ @GetMapping("/list")
+ public TableDataInfo list(BizCategoryBo bo, PageQuery pageQuery) {
+ return bizCategoryService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出类别列表
+ */
+ @SaCheckPermission("biz:category:export")
+ @Log(title = "类别", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(BizCategoryBo bo, HttpServletResponse response) {
+ List list = bizCategoryService.queryList(bo);
+ ExcelUtil.exportExcel(list, "类别", BizCategoryVo.class, response);
+ }
+
+ /**
+ * 获取类别详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("biz:category:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(bizCategoryService.queryById(id));
+ }
+
+ /**
+ * 新增类别
+ */
+ @SaCheckPermission("biz:category:add")
+ @Log(title = "类别", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody BizCategoryBo bo) {
+ return toAjax(bizCategoryService.insertByBo(bo));
+ }
+
+ /**
+ * 修改类别
+ */
+ @SaCheckPermission("biz:category:edit")
+ @Log(title = "类别", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody BizCategoryBo bo) {
+ return toAjax(bizCategoryService.updateByBo(bo));
+ }
+
+ /**
+ * 删除类别
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("biz:category:remove")
+ @Log(title = "类别", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(bizCategoryService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportFileController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportFileController.java
new file mode 100644
index 0000000..e7d3283
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportFileController.java
@@ -0,0 +1,105 @@
+package org.dromara.biz.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.biz.domain.vo.BizReportFileVo;
+import org.dromara.biz.domain.bo.BizReportFileBo;
+import org.dromara.biz.service.IBizReportFileService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 报送信息附件
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/biz/reportFile")
+public class BizReportFileController extends BaseController {
+
+ private final IBizReportFileService bizReportFileService;
+
+ /**
+ * 查询报送信息附件列表
+ */
+ @SaCheckPermission("biz:reportFile:list")
+ @GetMapping("/list")
+ public TableDataInfo list(BizReportFileBo bo, PageQuery pageQuery) {
+ return bizReportFileService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出报送信息附件列表
+ */
+ @SaCheckPermission("biz:reportFile:export")
+ @Log(title = "报送信息附件", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(BizReportFileBo bo, HttpServletResponse response) {
+ List list = bizReportFileService.queryList(bo);
+ ExcelUtil.exportExcel(list, "报送信息附件", BizReportFileVo.class, response);
+ }
+
+ /**
+ * 获取报送信息附件详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("biz:reportFile:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(bizReportFileService.queryById(id));
+ }
+
+ /**
+ * 新增报送信息附件
+ */
+ @SaCheckPermission("biz:reportFile:add")
+ @Log(title = "报送信息附件", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody BizReportFileBo bo) {
+ return toAjax(bizReportFileService.insertByBo(bo));
+ }
+
+ /**
+ * 修改报送信息附件
+ */
+ @SaCheckPermission("biz:reportFile:edit")
+ @Log(title = "报送信息附件", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody BizReportFileBo bo) {
+ return toAjax(bizReportFileService.updateByBo(bo));
+ }
+
+ /**
+ * 删除报送信息附件
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("biz:reportFile:remove")
+ @Log(title = "报送信息附件", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(bizReportFileService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportInfoController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportInfoController.java
new file mode 100644
index 0000000..c0edd55
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportInfoController.java
@@ -0,0 +1,115 @@
+package org.dromara.biz.controller;
+
+import java.util.Date;
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.common.core.domain.model.LoginUser;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.biz.domain.vo.BizReportInfoVo;
+import org.dromara.biz.domain.bo.BizReportInfoBo;
+import org.dromara.biz.service.IBizReportInfoService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 报送信息
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/biz/reportInfo")
+public class BizReportInfoController extends BaseController {
+
+ private final IBizReportInfoService bizReportInfoService;
+
+ /**
+ * 查询报送信息列表
+ */
+ @SaCheckPermission("biz:reportInfo:list")
+ @GetMapping("/list")
+ public TableDataInfo list(BizReportInfoBo bo, PageQuery pageQuery) {
+ return bizReportInfoService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出报送信息列表
+ */
+ @SaCheckPermission("biz:reportInfo:export")
+ @Log(title = "报送信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(BizReportInfoBo bo, HttpServletResponse response) {
+ List list = bizReportInfoService.queryList(bo);
+ ExcelUtil.exportExcel(list, "报送信息", BizReportInfoVo.class, response);
+ }
+
+ /**
+ * 获取报送信息详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("biz:reportInfo:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(bizReportInfoService.queryById(id));
+ }
+
+ /**
+ * 新增报送信息
+ */
+ @SaCheckPermission("biz:reportInfo:add")
+ @Log(title = "报送信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @ResponseBody
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody BizReportInfoBo bo) {
+ LoginUser user = LoginHelper.getLoginUser();
+ bo.setReportDeptId(user.getDeptId());
+ bo.setReportDeptName(user.getDeptName());
+ bo.setReportUserId(user.getUserId());
+ bo.setReportUserName(user.getNickname());
+ bo.setReportTime(new Date());
+ return toAjax(bizReportInfoService.insertByBo(bo));
+ }
+
+ /**
+ * 修改报送信息
+ */
+ @SaCheckPermission("biz:reportInfo:edit")
+ @Log(title = "报送信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody BizReportInfoBo bo) {
+ return toAjax(bizReportInfoService.updateByBo(bo));
+ }
+
+ /**
+ * 删除报送信息
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("biz:reportInfo:remove")
+ @Log(title = "报送信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(bizReportInfoService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportReceiverController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportReceiverController.java
new file mode 100644
index 0000000..4537c36
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportReceiverController.java
@@ -0,0 +1,120 @@
+package org.dromara.biz.controller;
+
+import java.util.Date;
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.biz.domain.vo.BizReportReceiverVo;
+import org.dromara.biz.domain.bo.BizReportReceiverBo;
+import org.dromara.biz.service.IBizReportReceiverService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 报送记录接收单位
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/biz/reportReceiver")
+public class BizReportReceiverController extends BaseController {
+
+ private final IBizReportReceiverService bizReportReceiverService;
+
+ /**
+ * 查询报送记录接收单位列表
+ */
+ @SaCheckPermission("biz:reportReceiver:list")
+ @GetMapping("/list")
+ public TableDataInfo list(BizReportReceiverBo bo, PageQuery pageQuery) {
+ return bizReportReceiverService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出报送记录接收单位列表
+ */
+ @SaCheckPermission("biz:reportReceiver:export")
+ @Log(title = "报送记录接收单位", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(BizReportReceiverBo bo, HttpServletResponse response) {
+ List list = bizReportReceiverService.queryList(bo);
+ ExcelUtil.exportExcel(list, "报送记录接收单位", BizReportReceiverVo.class, response);
+ }
+
+ /**
+ * 获取报送记录接收单位详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("biz:reportReceiver:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(bizReportReceiverService.queryById(id));
+ }
+
+ /**
+ * 新增报送记录接收单位
+ */
+ @SaCheckPermission("biz:reportReceiver:add")
+ @Log(title = "报送记录接收单位", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody BizReportReceiverBo bo) {
+ return toAjax(bizReportReceiverService.insertByBo(bo));
+ }
+
+ /**
+ * 修改报送记录接收单位
+ */
+ @SaCheckPermission("biz:reportReceiver:edit")
+ @Log(title = "报送记录接收单位", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody BizReportReceiverBo bo) {
+ return toAjax(bizReportReceiverService.updateByBo(bo));
+ }
+
+ /**
+ * 报送记录签收
+ */
+ @Log(title = "报送记录签收", businessType = BusinessType.UPDATE)
+ @PostMapping("/sign")
+ public R sign(@Validated(EditGroup.class) @RequestBody BizReportReceiverBo bo) {
+ bo.setIsSign(1L);
+ bo.setSignUserId(LoginHelper.getUserId());
+ bo.setSignUserName(LoginHelper.getLoginUser().getNickname());
+ bo.setSignTime(new Date());
+ return toAjax(bizReportReceiverService.updateByBo(bo));
+ }
+
+ /**
+ * 删除报送记录接收单位
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("biz:reportReceiver:remove")
+ @Log(title = "报送记录接收单位", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(bizReportReceiverService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportReplyController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportReplyController.java
new file mode 100644
index 0000000..19b5275
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/controller/BizReportReplyController.java
@@ -0,0 +1,105 @@
+package org.dromara.biz.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.biz.domain.vo.BizReportReplyVo;
+import org.dromara.biz.domain.bo.BizReportReplyBo;
+import org.dromara.biz.service.IBizReportReplyService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 报送记录反馈
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/biz/reportReply")
+public class BizReportReplyController extends BaseController {
+
+ private final IBizReportReplyService bizReportReplyService;
+
+ /**
+ * 查询报送记录反馈列表
+ */
+ @SaCheckPermission("biz:reportReply:list")
+ @GetMapping("/list")
+ public TableDataInfo list(BizReportReplyBo bo, PageQuery pageQuery) {
+ return bizReportReplyService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出报送记录反馈列表
+ */
+ @SaCheckPermission("biz:reportReply:export")
+ @Log(title = "报送记录反馈", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(BizReportReplyBo bo, HttpServletResponse response) {
+ List list = bizReportReplyService.queryList(bo);
+ ExcelUtil.exportExcel(list, "报送记录反馈", BizReportReplyVo.class, response);
+ }
+
+ /**
+ * 获取报送记录反馈详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("biz:reportReply:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(bizReportReplyService.queryById(id));
+ }
+
+ /**
+ * 新增报送记录反馈
+ */
+ @SaCheckPermission("biz:reportReply:add")
+ @Log(title = "报送记录反馈", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody BizReportReplyBo bo) {
+ return toAjax(bizReportReplyService.insertByBo(bo));
+ }
+
+ /**
+ * 修改报送记录反馈
+ */
+ @SaCheckPermission("biz:reportReply:edit")
+ @Log(title = "报送记录反馈", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody BizReportReplyBo bo) {
+ return toAjax(bizReportReplyService.updateByBo(bo));
+ }
+
+ /**
+ * 删除报送记录反馈
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("biz:reportReply:remove")
+ @Log(title = "报送记录反馈", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(bizReportReplyService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizCategory.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizCategory.java
new file mode 100644
index 0000000..081c253
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizCategory.java
@@ -0,0 +1,87 @@
+package org.dromara.biz.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 类别对象 biz_category
+ *
+ * @author ruansee
+ * @date 2025-11-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("biz_category")
+public class BizCategory extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 类别名称
+ */
+ private String title;
+
+ /**
+ * 类别(xxcl/xxbs)
+ */
+ private String cate;
+
+ /**
+ * 旧系统表
+ */
+ private String oldTable;
+
+ /**
+ * 旧系统类型
+ */
+ private String oldType;
+
+ /**
+ * 是否可以签收
+ */
+ private String canSign;
+
+ /**
+ * 是否可以反馈
+ */
+ private String canFeedback;
+
+ /**
+ * 是否可以回复
+ */
+ private String canReply;
+
+ /**
+ * 是否可以分享转发
+ */
+ private String canShare;
+
+ /**
+ * 模板地址
+ */
+ private String templateUrl;
+
+ /**
+ * 状态
+ */
+ private String status;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
+
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportFile.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportFile.java
new file mode 100644
index 0000000..b0319ee
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportFile.java
@@ -0,0 +1,46 @@
+package org.dromara.biz.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 报送信息附件对象 biz_report_file
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("biz_report_file")
+public class BizReportFile extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 报送信息ID
+ */
+ private Long reportId;
+
+ /**
+ * 附件名称
+ */
+ private String fileName;
+
+ /**
+ * 附件地址
+ */
+ private String fileUrl;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportInfo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportInfo.java
new file mode 100644
index 0000000..63a03c5
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportInfo.java
@@ -0,0 +1,133 @@
+package org.dromara.biz.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 报送信息对象 biz_report_info
+ *
+ * @author ruansee
+ * @date 2025-11-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("biz_report_info")
+public class BizReportInfo extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 标题
+ */
+ private String title;
+
+ /**
+ * 类别ID
+ */
+ private Long categoryId;
+
+ /**
+ * 抄送
+ */
+ private String chao;
+
+ /**
+ * 领导批示
+ */
+ private String ldps;
+
+ /**
+ * 期号
+ */
+ private String qh;
+
+ /**
+ * 旧系统表类型
+ */
+ private String oldTable;
+
+ /**
+ * 旧系统类型ID
+ */
+ private String oldType;
+
+ /**
+ * 旧系统ID
+ */
+ private Long oldId;
+
+ /**
+ * 文档地址
+ */
+ private String url;
+
+ /**
+ * 附件路径
+ */
+ private String fileUrl;
+
+ /**
+ * 附件名称
+ */
+ private String fileName;
+
+ /**
+ * 上报内容
+ */
+ private String content;
+
+ /**
+ * 上报时间
+ */
+ private Date reportTime;
+
+ /**
+ * 旧系统用户ID
+ */
+ private String oldUserId;
+
+ /**
+ * 上报用户ID
+ */
+ private Long reportUserId;
+
+ /**
+ * 上报用户名称
+ */
+ private String reportUserName;
+
+ /**
+ * 上报单位ID
+ */
+ private String reportDeptId;
+
+ /**
+ * 上报单位名称
+ */
+ private String reportDeptName;
+
+ /**
+ * 上报状态
+ */
+ private String status;
+
+ /**
+ * 更新用户ID
+ */
+ private Long updateUserId;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportReceiver.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportReceiver.java
new file mode 100644
index 0000000..fef4ea4
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportReceiver.java
@@ -0,0 +1,68 @@
+package org.dromara.biz.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 报送记录接收单位对象 biz_report_receiver
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("biz_report_receiver")
+public class BizReportReceiver extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 报送信息ID
+ */
+ private Long reportId;
+
+ /**
+ * 部门ID
+ */
+ private String deptId;
+
+ /**
+ * 部门名称
+ */
+ private String deptName;
+
+ /**
+ * 是否签收
+ */
+ private Long isSign;
+
+ /**
+ * 签收时间
+ */
+ private Date signTime;
+
+ /**
+ * 签收用户ID
+ */
+ private Long signUserId;
+
+ /**
+ * 签收用户名称
+ */
+ private String signUserName;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportReply.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportReply.java
new file mode 100644
index 0000000..dbcd0e3
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/BizReportReply.java
@@ -0,0 +1,61 @@
+package org.dromara.biz.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 报送记录反馈对象 biz_report_reply
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("biz_report_reply")
+public class BizReportReply extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 报送信息ID
+ */
+ private Long reportId;
+
+ /**
+ * 内容
+ */
+ private String content;
+
+ /**
+ * 用户ID
+ */
+ private Long userId;
+
+ /**
+ * 类型 1回复 2反馈
+ */
+ private String mode;
+
+ /**
+ * 附件地址
+ */
+ private String fileUrl;
+
+ /**
+ * 附件名称
+ */
+ private String fileName;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizCategoryBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizCategoryBo.java
new file mode 100644
index 0000000..e024a5f
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizCategoryBo.java
@@ -0,0 +1,92 @@
+package org.dromara.biz.domain.bo;
+
+import org.dromara.biz.domain.BizCategory;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 类别业务对象 biz_category
+ *
+ * @author ruansee
+ * @date 2025-11-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BizCategory.class, reverseConvertGenerate = false)
+public class BizCategoryBo extends BaseEntity {
+
+ /**
+ * ID
+ */
+ @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 类别名称
+ */
+ @NotBlank(message = "类别名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String title;
+
+ /**
+ * 类别(xxcl/xxbs)
+ */
+ private String cate;
+
+ /**
+ * 旧系统表
+ */
+ private String oldTable;
+
+ /**
+ * 旧系统类型
+ */
+ private String oldType;
+
+ /**
+ * 是否可以签收
+ */
+ @NotBlank(message = "是否可以签收不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String canSign;
+
+ /**
+ * 是否可以反馈
+ */
+ @NotBlank(message = "是否可以反馈不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String canFeedback;
+
+ /**
+ * 是否可以回复
+ */
+ @NotBlank(message = "是否可以回复不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String canReply;
+
+ /**
+ * 是否可以分享转发
+ */
+ @NotBlank(message = "是否可以分享转发不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String canShare;
+
+ /**
+ * 模板地址
+ */
+ @NotBlank(message = "模板地址不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String templateUrl;
+
+ /**
+ * 状态
+ */
+ @NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String status;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportFileBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportFileBo.java
new file mode 100644
index 0000000..2202a54
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportFileBo.java
@@ -0,0 +1,45 @@
+package org.dromara.biz.domain.bo;
+
+import org.dromara.biz.domain.BizReportFile;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 报送信息附件业务对象 biz_report_file
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BizReportFile.class, reverseConvertGenerate = false)
+public class BizReportFileBo extends BaseEntity {
+
+ /**
+ * ID
+ */
+ @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 报送信息ID
+ */
+ private Long reportId;
+
+ /**
+ * 附件名称
+ */
+ private String fileName;
+
+ /**
+ * 附件地址
+ */
+ private String fileUrl;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportInfoBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportInfoBo.java
new file mode 100644
index 0000000..d94c280
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportInfoBo.java
@@ -0,0 +1,150 @@
+package org.dromara.biz.domain.bo;
+
+import org.dromara.biz.domain.BizReportFile;
+import org.dromara.biz.domain.BizReportInfo;
+import org.dromara.biz.domain.BizReportReceiver;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 报送信息业务对象 biz_report_info
+ *
+ * @author ruansee
+ * @date 2025-11-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BizReportInfo.class, reverseConvertGenerate = false)
+public class BizReportInfoBo extends BaseEntity {
+
+ /**
+ * ID
+ */
+ @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 标题
+ */
+ private String title;
+
+ /**
+ * 类别ID
+ */
+ private Long categoryId;
+
+ /**
+ * 抄送
+ */
+ private String chao;
+
+ /**
+ * 领导批示
+ */
+ private String ldps;
+
+ /**
+ * 期号
+ */
+ private String qh;
+
+ /**
+ * 旧系统表类型
+ */
+ private String oldTable;
+
+ /**
+ * 旧系统类型ID
+ */
+ private String oldType;
+
+ /**
+ * 旧系统ID
+ */
+ private Long oldId;
+
+ /**
+ * 文档地址
+ */
+ private String url;
+
+ /**
+ * 附件路径
+ */
+ private String fileUrl;
+
+ /**
+ * 附件名称
+ */
+ private String fileName;
+
+ /**
+ * 上报内容
+ */
+ private String content;
+
+ /**
+ * 上报时间
+ */
+ private Date reportTime;
+
+ /**
+ * 旧系统用户ID
+ */
+ private String oldUserId;
+
+ /**
+ * 上报用户ID
+ */
+ private Long reportUserId;
+
+ /**
+ * 上报用户名称
+ */
+ private String reportUserName;
+
+ /**
+ * 上报单位ID
+ */
+ private String reportDeptId;
+
+ /**
+ * 上报单位名称
+ */
+ private String reportDeptName;
+
+ /**
+ * 上报状态
+ */
+ private String status;
+
+ /**
+ * 更新用户ID
+ */
+ private Long updateUserId;
+
+ /**
+ * 附件列表
+ */
+ private List files;
+
+
+ /**
+ * 接收单位
+ */
+ private List receiverDepts;
+
+ /**
+ * 接收单位ID 新增修改用
+ */
+ private String[] receiverDeptIds;
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportReceiverBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportReceiverBo.java
new file mode 100644
index 0000000..933617c
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportReceiverBo.java
@@ -0,0 +1,67 @@
+package org.dromara.biz.domain.bo;
+
+import org.dromara.biz.domain.BizReportReceiver;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 报送记录接收单位业务对象 biz_report_receiver
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BizReportReceiver.class, reverseConvertGenerate = false)
+public class BizReportReceiverBo extends BaseEntity {
+
+ /**
+ * ID
+ */
+ @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 报送信息ID
+ */
+ private Long reportId;
+
+ /**
+ * 部门ID
+ */
+ private String deptId;
+
+ /**
+ * 部门名称
+ */
+ private String deptName;
+
+ /**
+ * 是否签收
+ */
+ private Long isSign;
+
+ /**
+ * 签收时间
+ */
+ private Date signTime;
+
+ /**
+ * 签收用户ID
+ */
+ private Long signUserId;
+
+ /**
+ * 签收用户名称
+ */
+ private String signUserName;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportReplyBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportReplyBo.java
new file mode 100644
index 0000000..6bf39a2
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/bo/BizReportReplyBo.java
@@ -0,0 +1,60 @@
+package org.dromara.biz.domain.bo;
+
+import org.dromara.biz.domain.BizReportReply;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 报送记录反馈业务对象 biz_report_reply
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BizReportReply.class, reverseConvertGenerate = false)
+public class BizReportReplyBo extends BaseEntity {
+
+ /**
+ * ID
+ */
+ @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 报送信息ID
+ */
+ private Long reportId;
+
+ /**
+ * 内容
+ */
+ private String content;
+
+ /**
+ * 用户ID
+ */
+ private Long userId;
+
+ /**
+ * 类型 1回复 2反馈
+ */
+ private String mode;
+
+ /**
+ * 附件地址
+ */
+ private String fileUrl;
+
+ /**
+ * 附件名称
+ */
+ private String fileName;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizCategoryVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizCategoryVo.java
new file mode 100644
index 0000000..8c4aa0e
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizCategoryVo.java
@@ -0,0 +1,110 @@
+package org.dromara.biz.domain.vo;
+
+import org.dromara.biz.domain.BizCategory;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 类别视图对象 biz_category
+ *
+ * @author ruansee
+ * @date 2025-11-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = BizCategory.class)
+public class BizCategoryVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ExcelProperty(value = "ID")
+ private Long id;
+
+ /**
+ * 类别名称
+ */
+ @ExcelProperty(value = "类别名称")
+ private String title;
+
+ /**
+ * 类别(xxcl/xxbs)
+ */
+ @ExcelProperty(value = "类别", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "x=xcl/xxbs")
+ private String cate;
+
+ /**
+ * 旧系统表
+ */
+ @ExcelProperty(value = "旧系统表")
+ private String oldTable;
+
+ /**
+ * 旧系统类型
+ */
+ @ExcelProperty(value = "旧系统类型")
+ private String oldType;
+
+ /**
+ * 是否可以签收
+ */
+ @ExcelProperty(value = "是否可以签收", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "sys_yes_no")
+ private String canSign;
+
+ /**
+ * 是否可以反馈
+ */
+ @ExcelProperty(value = "是否可以反馈", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "sys_yes_no")
+ private String canFeedback;
+
+ /**
+ * 是否可以回复
+ */
+ @ExcelProperty(value = "是否可以回复", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "sys_yes_no")
+ private String canReply;
+
+ /**
+ * 是否可以分享转发
+ */
+ @ExcelProperty(value = "是否可以分享转发", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "sys_yes_no")
+ private String canShare;
+
+ /**
+ * 模板地址
+ */
+ @ExcelProperty(value = "模板地址")
+ private String templateUrl;
+
+ /**
+ * 状态
+ */
+ @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "sys_data_state")
+ private String status;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportFileVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportFileVo.java
new file mode 100644
index 0000000..ac7c2b6
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportFileVo.java
@@ -0,0 +1,56 @@
+package org.dromara.biz.domain.vo;
+
+import org.dromara.biz.domain.BizReportFile;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 报送信息附件视图对象 biz_report_file
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = BizReportFile.class)
+public class BizReportFileVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ExcelProperty(value = "ID")
+ private Long id;
+
+ /**
+ * 报送信息ID
+ */
+ @ExcelProperty(value = "报送信息ID")
+ private Long reportId;
+
+ /**
+ * 附件名称
+ */
+ @ExcelProperty(value = "附件名称")
+ private String fileName;
+
+ /**
+ * 附件地址
+ */
+ @ExcelProperty(value = "附件地址")
+ private String fileUrl;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportInfoVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportInfoVo.java
new file mode 100644
index 0000000..2ace925
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportInfoVo.java
@@ -0,0 +1,184 @@
+package org.dromara.biz.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.biz.domain.BizReportFile;
+import org.dromara.biz.domain.BizReportInfo;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.biz.domain.BizReportReceiver;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 报送信息视图对象 biz_report_info
+ *
+ * @author ruansee
+ * @date 2025-11-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = BizReportInfo.class)
+public class BizReportInfoVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ExcelProperty(value = "ID")
+ private Long id;
+
+ /**
+ * 标题
+ */
+ @ExcelProperty(value = "标题")
+ private String title;
+
+ /**
+ * 类别ID
+ */
+ @ExcelProperty(value = "类别ID")
+ private Long categoryId;
+
+ /**
+ * 类别名称
+ */
+ @ExcelProperty(value = "类别名称")
+ private String categoryTitle;
+
+ /**
+ * 抄送
+ */
+ @ExcelProperty(value = "抄送")
+ private String chao;
+
+ /**
+ * 领导批示
+ */
+ @ExcelProperty(value = "领导批示")
+ private String ldps;
+
+ /**
+ * 期号
+ */
+ @ExcelProperty(value = "期号")
+ private String qh;
+
+ /**
+ * 旧系统表类型
+ */
+ @ExcelProperty(value = "旧系统表类型")
+ private String oldTable;
+
+ /**
+ * 旧系统类型ID
+ */
+ @ExcelProperty(value = "旧系统类型ID")
+ private String oldType;
+
+ /**
+ * 旧系统ID
+ */
+ @ExcelProperty(value = "旧系统ID")
+ private Long oldId;
+
+ /**
+ * 文档地址
+ */
+ @ExcelProperty(value = "文档地址")
+ private String url;
+
+ /**
+ * 附件路径
+ */
+ @ExcelProperty(value = "附件路径")
+ private String fileUrl;
+
+ /**
+ * 附件名称
+ */
+ @ExcelProperty(value = "附件名称")
+ private String fileName;
+
+ /**
+ * 上报内容
+ */
+ @ExcelProperty(value = "上报内容")
+ private String content;
+
+ /**
+ * 上报时间
+ */
+ @ExcelProperty(value = "上报时间")
+ private Date reportTime;
+
+ /**
+ * 旧系统用户ID
+ */
+ @ExcelProperty(value = "旧系统用户ID")
+ private String oldUserId;
+
+ /**
+ * 上报用户ID
+ */
+ @ExcelProperty(value = "上报用户ID")
+ private Long reportUserId;
+
+ /**
+ * 上报用户名称
+ */
+ @ExcelProperty(value = "上报用户名称")
+ private String reportUserName;
+
+ /**
+ * 上报单位ID
+ */
+ @ExcelProperty(value = "上报单位ID")
+ private String reportDeptId;
+
+ /**
+ * 上报单位名称
+ */
+ @ExcelProperty(value = "上报单位名称")
+ private String reportDeptName;
+
+ /**
+ * 上报状态
+ */
+ @ExcelProperty(value = "上报状态", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "biz_report_status")
+ private String status;
+
+ /**
+ * 更新用户ID
+ */
+ @ExcelProperty(value = "更新用户ID")
+ private Long updateUserId;
+
+
+ /**
+ * 附件列表
+ */
+ private List files;
+
+
+ /**
+ * 接收单位
+ */
+ private List receiverDepts;
+
+ /**
+ * 接收单位ID 新增修改用
+ */
+ private String[] receiverDeptIds;
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportReceiverVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportReceiverVo.java
new file mode 100644
index 0000000..d76dffb
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportReceiverVo.java
@@ -0,0 +1,82 @@
+package org.dromara.biz.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.biz.domain.BizReportReceiver;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 报送记录接收单位视图对象 biz_report_receiver
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = BizReportReceiver.class)
+public class BizReportReceiverVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ExcelProperty(value = "ID")
+ private Long id;
+
+ /**
+ * 报送信息ID
+ */
+ @ExcelProperty(value = "报送信息ID")
+ private Long reportId;
+
+ /**
+ * 部门ID
+ */
+ @ExcelProperty(value = "部门ID")
+ private String deptId;
+
+ /**
+ * 部门名称
+ */
+ @ExcelProperty(value = "部门名称")
+ private String deptName;
+
+ /**
+ * 是否签收
+ */
+ @ExcelProperty(value = "是否签收")
+ private Long isSign;
+
+ /**
+ * 签收时间
+ */
+ @ExcelProperty(value = "签收时间")
+ private Date signTime;
+
+ /**
+ * 签收用户ID
+ */
+ @ExcelProperty(value = "签收用户ID")
+ private Long signUserId;
+
+ /**
+ * 签收用户名称
+ */
+ @ExcelProperty(value = "签收用户名称")
+ private String signUserName;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportReplyVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportReplyVo.java
new file mode 100644
index 0000000..1f6b1f1
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/domain/vo/BizReportReplyVo.java
@@ -0,0 +1,74 @@
+package org.dromara.biz.domain.vo;
+
+import org.dromara.biz.domain.BizReportReply;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 报送记录反馈视图对象 biz_report_reply
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = BizReportReply.class)
+public class BizReportReplyVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ExcelProperty(value = "ID")
+ private Long id;
+
+ /**
+ * 报送信息ID
+ */
+ @ExcelProperty(value = "报送信息ID")
+ private Long reportId;
+
+ /**
+ * 内容
+ */
+ @ExcelProperty(value = "内容")
+ private String content;
+
+ /**
+ * 用户ID
+ */
+ @ExcelProperty(value = "用户ID")
+ private Long userId;
+
+ /**
+ * 类型 1回复 2反馈
+ */
+ @ExcelProperty(value = "类型 1回复 2反馈")
+ private String mode;
+
+ /**
+ * 附件地址
+ */
+ @ExcelProperty(value = "附件地址")
+ private String fileUrl;
+
+ /**
+ * 附件名称
+ */
+ @ExcelProperty(value = "附件名称")
+ private String fileName;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizCategoryMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizCategoryMapper.java
new file mode 100644
index 0000000..9a7c4e3
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizCategoryMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.biz.mapper;
+
+import org.dromara.biz.domain.BizCategory;
+import org.dromara.biz.domain.vo.BizCategoryVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 类别Mapper接口
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+public interface BizCategoryMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportFileMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportFileMapper.java
new file mode 100644
index 0000000..f6b594a
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportFileMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.biz.mapper;
+
+import org.dromara.biz.domain.BizReportFile;
+import org.dromara.biz.domain.vo.BizReportFileVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 报送信息附件Mapper接口
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+public interface BizReportFileMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportInfoMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportInfoMapper.java
new file mode 100644
index 0000000..9a08eca
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportInfoMapper.java
@@ -0,0 +1,29 @@
+package org.dromara.biz.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.dromara.biz.domain.BizReportInfo;
+import org.dromara.biz.domain.vo.BizReportInfoVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 报送信息Mapper接口
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+public interface BizReportInfoMapper extends BaseMapperPlus {
+
+ @Select("select i.*, c.title as categoryTitle from biz_report_info i left join biz_category c on i.category_id = c.id where i.id = ${id}")
+ BizReportInfoVo selectBizReportInfoVoById(@Param("id") Long id);
+
+ @Select("select i.*, c.title as categoryTitle from biz_report_info i left join biz_category c on i.category_id = c.id ${ew.getCustomSqlSegment}")
+ List selectBizReportInfoVoList(@Param("ew") Wrapper queryWrapper);
+
+ @Select("select i.*, c.title as categoryTitle from biz_report_info i left join biz_category c on i.category_id = c.id ${ew.getCustomSqlSegment}")
+ Page selectBizReportInfoVoPage(@Param("page") Page page, @Param("ew") Wrapper queryWrapper);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportReceiverMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportReceiverMapper.java
new file mode 100644
index 0000000..1221b56
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportReceiverMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.biz.mapper;
+
+import org.dromara.biz.domain.BizReportReceiver;
+import org.dromara.biz.domain.vo.BizReportReceiverVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 报送记录接收单位Mapper接口
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+public interface BizReportReceiverMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportReplyMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportReplyMapper.java
new file mode 100644
index 0000000..dc9bc58
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/mapper/BizReportReplyMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.biz.mapper;
+
+import org.dromara.biz.domain.BizReportReply;
+import org.dromara.biz.domain.vo.BizReportReplyVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 报送记录反馈Mapper接口
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+public interface BizReportReplyMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizCategoryService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizCategoryService.java
new file mode 100644
index 0000000..39523e3
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizCategoryService.java
@@ -0,0 +1,68 @@
+package org.dromara.biz.service;
+
+import org.dromara.biz.domain.vo.BizCategoryVo;
+import org.dromara.biz.domain.bo.BizCategoryBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 类别Service接口
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+public interface IBizCategoryService {
+
+ /**
+ * 查询类别
+ *
+ * @param id 主键
+ * @return 类别
+ */
+ BizCategoryVo queryById(Long id);
+
+ /**
+ * 分页查询类别列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 类别分页列表
+ */
+ TableDataInfo queryPageList(BizCategoryBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的类别列表
+ *
+ * @param bo 查询条件
+ * @return 类别列表
+ */
+ List queryList(BizCategoryBo bo);
+
+ /**
+ * 新增类别
+ *
+ * @param bo 类别
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(BizCategoryBo bo);
+
+ /**
+ * 修改类别
+ *
+ * @param bo 类别
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(BizCategoryBo bo);
+
+ /**
+ * 校验并批量删除类别信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportFileService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportFileService.java
new file mode 100644
index 0000000..76c3018
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportFileService.java
@@ -0,0 +1,68 @@
+package org.dromara.biz.service;
+
+import org.dromara.biz.domain.vo.BizReportFileVo;
+import org.dromara.biz.domain.bo.BizReportFileBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 报送信息附件Service接口
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+public interface IBizReportFileService {
+
+ /**
+ * 查询报送信息附件
+ *
+ * @param id 主键
+ * @return 报送信息附件
+ */
+ BizReportFileVo queryById(Long id);
+
+ /**
+ * 分页查询报送信息附件列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 报送信息附件分页列表
+ */
+ TableDataInfo queryPageList(BizReportFileBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的报送信息附件列表
+ *
+ * @param bo 查询条件
+ * @return 报送信息附件列表
+ */
+ List queryList(BizReportFileBo bo);
+
+ /**
+ * 新增报送信息附件
+ *
+ * @param bo 报送信息附件
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(BizReportFileBo bo);
+
+ /**
+ * 修改报送信息附件
+ *
+ * @param bo 报送信息附件
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(BizReportFileBo bo);
+
+ /**
+ * 校验并批量删除报送信息附件信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportInfoService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportInfoService.java
new file mode 100644
index 0000000..e3fa76e
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportInfoService.java
@@ -0,0 +1,68 @@
+package org.dromara.biz.service;
+
+import org.dromara.biz.domain.vo.BizReportInfoVo;
+import org.dromara.biz.domain.bo.BizReportInfoBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 报送信息Service接口
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+public interface IBizReportInfoService {
+
+ /**
+ * 查询报送信息
+ *
+ * @param id 主键
+ * @return 报送信息
+ */
+ BizReportInfoVo queryById(Long id);
+
+ /**
+ * 分页查询报送信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 报送信息分页列表
+ */
+ TableDataInfo queryPageList(BizReportInfoBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的报送信息列表
+ *
+ * @param bo 查询条件
+ * @return 报送信息列表
+ */
+ List queryList(BizReportInfoBo bo);
+
+ /**
+ * 新增报送信息
+ *
+ * @param bo 报送信息
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(BizReportInfoBo bo);
+
+ /**
+ * 修改报送信息
+ *
+ * @param bo 报送信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(BizReportInfoBo bo);
+
+ /**
+ * 校验并批量删除报送信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportReceiverService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportReceiverService.java
new file mode 100644
index 0000000..34ef99d
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportReceiverService.java
@@ -0,0 +1,68 @@
+package org.dromara.biz.service;
+
+import org.dromara.biz.domain.vo.BizReportReceiverVo;
+import org.dromara.biz.domain.bo.BizReportReceiverBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 报送记录接收单位Service接口
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+public interface IBizReportReceiverService {
+
+ /**
+ * 查询报送记录接收单位
+ *
+ * @param id 主键
+ * @return 报送记录接收单位
+ */
+ BizReportReceiverVo queryById(Long id);
+
+ /**
+ * 分页查询报送记录接收单位列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 报送记录接收单位分页列表
+ */
+ TableDataInfo queryPageList(BizReportReceiverBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的报送记录接收单位列表
+ *
+ * @param bo 查询条件
+ * @return 报送记录接收单位列表
+ */
+ List queryList(BizReportReceiverBo bo);
+
+ /**
+ * 新增报送记录接收单位
+ *
+ * @param bo 报送记录接收单位
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(BizReportReceiverBo bo);
+
+ /**
+ * 修改报送记录接收单位
+ *
+ * @param bo 报送记录接收单位
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(BizReportReceiverBo bo);
+
+ /**
+ * 校验并批量删除报送记录接收单位信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportReplyService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportReplyService.java
new file mode 100644
index 0000000..ac9ac93
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/IBizReportReplyService.java
@@ -0,0 +1,68 @@
+package org.dromara.biz.service;
+
+import org.dromara.biz.domain.vo.BizReportReplyVo;
+import org.dromara.biz.domain.bo.BizReportReplyBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 报送记录反馈Service接口
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+public interface IBizReportReplyService {
+
+ /**
+ * 查询报送记录反馈
+ *
+ * @param id 主键
+ * @return 报送记录反馈
+ */
+ BizReportReplyVo queryById(Long id);
+
+ /**
+ * 分页查询报送记录反馈列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 报送记录反馈分页列表
+ */
+ TableDataInfo queryPageList(BizReportReplyBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的报送记录反馈列表
+ *
+ * @param bo 查询条件
+ * @return 报送记录反馈列表
+ */
+ List queryList(BizReportReplyBo bo);
+
+ /**
+ * 新增报送记录反馈
+ *
+ * @param bo 报送记录反馈
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(BizReportReplyBo bo);
+
+ /**
+ * 修改报送记录反馈
+ *
+ * @param bo 报送记录反馈
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(BizReportReplyBo bo);
+
+ /**
+ * 校验并批量删除报送记录反馈信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizCategoryServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizCategoryServiceImpl.java
new file mode 100644
index 0000000..543466f
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizCategoryServiceImpl.java
@@ -0,0 +1,139 @@
+package org.dromara.biz.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.biz.domain.bo.BizCategoryBo;
+import org.dromara.biz.domain.vo.BizCategoryVo;
+import org.dromara.biz.domain.BizCategory;
+import org.dromara.biz.mapper.BizCategoryMapper;
+import org.dromara.biz.service.IBizCategoryService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 类别Service业务层处理
+ *
+ * @author ruansee
+ * @date 2025-11-24
+ */
+@RequiredArgsConstructor
+@Service
+public class BizCategoryServiceImpl implements IBizCategoryService {
+
+ private final BizCategoryMapper baseMapper;
+
+ /**
+ * 查询类别
+ *
+ * @param id 主键
+ * @return 类别
+ */
+ @Override
+ public BizCategoryVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询类别列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 类别分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(BizCategoryBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的类别列表
+ *
+ * @param bo 查询条件
+ * @return 类别列表
+ */
+ @Override
+ public List queryList(BizCategoryBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(BizCategoryBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.orderByAsc(BizCategory::getId);
+ lqw.eq(StringUtils.isNotBlank(bo.getTitle()), BizCategory::getTitle, bo.getTitle());
+ lqw.eq(StringUtils.isNotBlank(bo.getCate()), BizCategory::getCate, bo.getCate());
+ lqw.eq(StringUtils.isNotBlank(bo.getOldTable()), BizCategory::getOldTable, bo.getOldTable());
+ lqw.eq(StringUtils.isNotBlank(bo.getOldType()), BizCategory::getOldType, bo.getOldType());
+ lqw.eq(StringUtils.isNotBlank(bo.getCanSign()), BizCategory::getCanSign, bo.getCanSign());
+ lqw.eq(StringUtils.isNotBlank(bo.getCanFeedback()), BizCategory::getCanFeedback, bo.getCanFeedback());
+ lqw.eq(StringUtils.isNotBlank(bo.getCanReply()), BizCategory::getCanReply, bo.getCanReply());
+ lqw.eq(StringUtils.isNotBlank(bo.getCanShare()), BizCategory::getCanShare, bo.getCanShare());
+ lqw.eq(StringUtils.isNotBlank(bo.getTemplateUrl()), BizCategory::getTemplateUrl, bo.getTemplateUrl());
+ lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BizCategory::getStatus, bo.getStatus());
+ return lqw;
+ }
+
+ /**
+ * 新增类别
+ *
+ * @param bo 类别
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(BizCategoryBo bo) {
+ BizCategory add = MapstructUtils.convert(bo, BizCategory.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改类别
+ *
+ * @param bo 类别
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(BizCategoryBo bo) {
+ BizCategory update = MapstructUtils.convert(bo, BizCategory.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(BizCategory entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除类别信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportFileServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportFileServiceImpl.java
new file mode 100644
index 0000000..c39f38e
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportFileServiceImpl.java
@@ -0,0 +1,132 @@
+package org.dromara.biz.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.biz.domain.bo.BizReportFileBo;
+import org.dromara.biz.domain.vo.BizReportFileVo;
+import org.dromara.biz.domain.BizReportFile;
+import org.dromara.biz.mapper.BizReportFileMapper;
+import org.dromara.biz.service.IBizReportFileService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 报送信息附件Service业务层处理
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@RequiredArgsConstructor
+@Service
+public class BizReportFileServiceImpl implements IBizReportFileService {
+
+ private final BizReportFileMapper baseMapper;
+
+ /**
+ * 查询报送信息附件
+ *
+ * @param id 主键
+ * @return 报送信息附件
+ */
+ @Override
+ public BizReportFileVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询报送信息附件列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 报送信息附件分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(BizReportFileBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的报送信息附件列表
+ *
+ * @param bo 查询条件
+ * @return 报送信息附件列表
+ */
+ @Override
+ public List queryList(BizReportFileBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(BizReportFileBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.orderByAsc(BizReportFile::getId);
+ lqw.eq(bo.getReportId() != null, BizReportFile::getReportId, bo.getReportId());
+ lqw.like(StringUtils.isNotBlank(bo.getFileName()), BizReportFile::getFileName, bo.getFileName());
+ lqw.eq(StringUtils.isNotBlank(bo.getFileUrl()), BizReportFile::getFileUrl, bo.getFileUrl());
+ return lqw;
+ }
+
+ /**
+ * 新增报送信息附件
+ *
+ * @param bo 报送信息附件
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(BizReportFileBo bo) {
+ BizReportFile add = MapstructUtils.convert(bo, BizReportFile.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改报送信息附件
+ *
+ * @param bo 报送信息附件
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(BizReportFileBo bo) {
+ BizReportFile update = MapstructUtils.convert(bo, BizReportFile.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(BizReportFile entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除报送信息附件信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportInfoServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportInfoServiceImpl.java
new file mode 100644
index 0000000..a8a24b8
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportInfoServiceImpl.java
@@ -0,0 +1,240 @@
+package org.dromara.biz.service.impl;
+
+import org.dromara.biz.domain.BizReportFile;
+import org.dromara.biz.domain.BizReportReceiver;
+import org.dromara.biz.domain.vo.BizReportReceiverVo;
+import org.dromara.biz.mapper.BizReportFileMapper;
+import org.dromara.biz.mapper.BizReportReceiverMapper;
+import org.dromara.common.core.utils.Helper;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.system.mapper.SysDeptMapper;
+import org.springframework.stereotype.Service;
+import org.dromara.biz.domain.bo.BizReportInfoBo;
+import org.dromara.biz.domain.vo.BizReportInfoVo;
+import org.dromara.biz.domain.BizReportInfo;
+import org.dromara.biz.mapper.BizReportInfoMapper;
+import org.dromara.biz.service.IBizReportInfoService;
+
+import java.util.*;
+
+/**
+ * 报送信息Service业务层处理
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@RequiredArgsConstructor
+@Service
+public class BizReportInfoServiceImpl implements IBizReportInfoService {
+
+ private final BizReportInfoMapper baseMapper;
+
+ private final BizReportFileMapper fileMapper;
+
+ private final BizReportReceiverMapper receiverMapper;
+
+ private final SysDeptMapper deptMapper;
+
+ /**
+ * 查询报送信息
+ *
+ * @param id 主键
+ * @return 报送信息
+ */
+ @Override
+ public BizReportInfoVo queryById(Long id){
+ BizReportInfoVo info = baseMapper.selectBizReportInfoVoById(id);
+
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(BizReportReceiver::getReportId, id);
+ List receiverVos = receiverMapper.selectList(lqw);
+ info.setReceiverDepts(receiverVos);
+
+ List deptids = new ArrayList<>();
+ for (BizReportReceiver item : receiverVos) {
+ deptids.add(item.getDeptId());
+ }
+ info.setReceiverDeptIds(deptids.toArray(new String[deptids.size()]));
+
+ LambdaQueryWrapper lqwf = Wrappers.lambdaQuery();
+ lqwf.eq(BizReportFile::getReportId, id);
+ List files = fileMapper.selectList(lqwf);
+ info.setFiles(files);
+
+ return info;
+ }
+
+ /**
+ * 分页查询报送信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 报送信息分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(BizReportInfoBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectBizReportInfoVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的报送信息列表
+ *
+ * @param bo 查询条件
+ * @return 报送信息列表
+ */
+ @Override
+ public List queryList(BizReportInfoBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectBizReportInfoVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(BizReportInfoBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.orderByDesc(BizReportInfo::getReportTime);
+ lqw.eq(StringUtils.isNotBlank(bo.getTitle()), BizReportInfo::getTitle, bo.getTitle());
+ lqw.eq(bo.getCategoryId() != null, BizReportInfo::getCategoryId, bo.getCategoryId());
+ lqw.eq(StringUtils.isNotBlank(bo.getChao()), BizReportInfo::getChao, bo.getChao());
+ lqw.eq(StringUtils.isNotBlank(bo.getLdps()), BizReportInfo::getLdps, bo.getLdps());
+ lqw.eq(StringUtils.isNotBlank(bo.getQh()), BizReportInfo::getQh, bo.getQh());
+ lqw.eq(StringUtils.isNotBlank(bo.getOldType()), BizReportInfo::getOldType, bo.getOldType());
+ lqw.eq(bo.getOldId() != null, BizReportInfo::getOldId, bo.getOldId());
+ lqw.eq(StringUtils.isNotBlank(bo.getUrl()), BizReportInfo::getUrl, bo.getUrl());
+ lqw.eq(StringUtils.isNotBlank(bo.getFileUrl()), BizReportInfo::getFileUrl, bo.getFileUrl());
+ lqw.like(StringUtils.isNotBlank(bo.getFileName()), BizReportInfo::getFileName, bo.getFileName());
+ lqw.eq(StringUtils.isNotBlank(bo.getContent()), BizReportInfo::getContent, bo.getContent());
+ lqw.eq(bo.getReportTime() != null, BizReportInfo::getReportTime, bo.getReportTime());
+ lqw.between(params.get("beginReportTime") != null && params.get("endReportTime") != null,
+ BizReportInfo::getReportTime ,params.get("beginReportTime"), params.get("endReportTime"));
+ lqw.eq(bo.getReportUserId() != null, BizReportInfo::getReportUserId, bo.getReportUserId());
+ lqw.like(StringUtils.isNotBlank(bo.getReportUserName()), BizReportInfo::getReportUserName, bo.getReportUserName());
+ lqw.eq(bo.getReportDeptId() != null, BizReportInfo::getReportDeptId, bo.getReportDeptId());
+ lqw.like(StringUtils.isNotBlank(bo.getReportDeptName()), BizReportInfo::getReportDeptName, bo.getReportDeptName());
+ lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BizReportInfo::getStatus, bo.getStatus());
+ lqw.eq(bo.getUpdateUserId() != null, BizReportInfo::getUpdateUserId, bo.getUpdateUserId());
+ return lqw;
+ }
+
+ /**
+ * 新增报送信息
+ *
+ * @param bo 报送信息
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(BizReportInfoBo bo) {
+ BizReportInfo add = MapstructUtils.convert(bo, BizReportInfo.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+
+ // 插入接收单位表
+ if(bo.getReceiverDeptIds().length>0){
+ for (String deptId : bo.getReceiverDeptIds()) {
+ BizReportReceiver receiver = new BizReportReceiver();
+ receiver.setReportId(bo.getId());
+ receiver.setDeptId(deptId);
+ receiver.setDeptName(deptMapper.selectVoById(deptId).getDeptName());
+ receiverMapper.insert(receiver);
+ }
+ }
+
+ // 插入附件表
+ if (bo.getFiles().size()>0){
+ for (BizReportFile file : bo.getFiles()) {
+ file.setReportId(bo.getId());
+ fileMapper.insert(file);
+ }
+ }
+
+ }
+ return flag;
+ }
+
+
+ /**
+ * 修改报送信息
+ *
+ * @param bo 报送信息
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(BizReportInfoBo bo) {
+ BizReportInfo update = MapstructUtils.convert(bo, BizReportInfo.class);
+ validEntityBeforeSave(update);
+
+ boolean flag = baseMapper.updateById(update) > 0;
+ if (flag){
+ // 插入接收单位表
+ List dbDeptIds = new ArrayList<>();
+ if (bo.getReceiverDepts().size()>0) {
+ for (BizReportReceiver receiver : bo.getReceiverDepts()) {
+ if (!Arrays.asList(bo.getReceiverDeptIds()).contains(receiver.getDeptId()))
+ receiverMapper.deleteById(receiver.getId());
+ dbDeptIds.add(receiver.getDeptId());
+ }
+ }else{
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(BizReportReceiver::getReportId, bo.getId());
+ receiverMapper.delete(lqw);
+ }
+ if(bo.getReceiverDeptIds().length>0){
+ for (String deptId : bo.getReceiverDeptIds()) {
+ if (dbDeptIds.contains(deptId)) continue;
+ else {
+ BizReportReceiver receiver = new BizReportReceiver();
+ receiver.setReportId(bo.getId());
+ receiver.setDeptId(deptId);
+ receiver.setDeptName(deptMapper.selectVoById(deptId).getDeptName());
+ receiverMapper.insert(receiver);
+ }
+ }
+ }
+
+ // 插入附件表
+ if (bo.getFiles().size()>0){
+
+ for (BizReportFile file : bo.getFiles()) {
+ if (Helper.FInt(file.getId())>0) continue;
+ else {
+ file.setReportId(bo.getId());
+ fileMapper.insert(file);
+ }
+ }
+ }
+ }
+ return flag;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(BizReportInfo entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除报送信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportReceiverServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportReceiverServiceImpl.java
new file mode 100644
index 0000000..8700e13
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportReceiverServiceImpl.java
@@ -0,0 +1,136 @@
+package org.dromara.biz.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.biz.domain.bo.BizReportReceiverBo;
+import org.dromara.biz.domain.vo.BizReportReceiverVo;
+import org.dromara.biz.domain.BizReportReceiver;
+import org.dromara.biz.mapper.BizReportReceiverMapper;
+import org.dromara.biz.service.IBizReportReceiverService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 报送记录接收单位Service业务层处理
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@RequiredArgsConstructor
+@Service
+public class BizReportReceiverServiceImpl implements IBizReportReceiverService {
+
+ private final BizReportReceiverMapper baseMapper;
+
+ /**
+ * 查询报送记录接收单位
+ *
+ * @param id 主键
+ * @return 报送记录接收单位
+ */
+ @Override
+ public BizReportReceiverVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询报送记录接收单位列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 报送记录接收单位分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(BizReportReceiverBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的报送记录接收单位列表
+ *
+ * @param bo 查询条件
+ * @return 报送记录接收单位列表
+ */
+ @Override
+ public List queryList(BizReportReceiverBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(BizReportReceiverBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.orderByAsc(BizReportReceiver::getId);
+ lqw.eq(bo.getReportId() != null, BizReportReceiver::getReportId, bo.getReportId());
+ lqw.eq(bo.getDeptId() != null, BizReportReceiver::getDeptId, bo.getDeptId());
+ lqw.like(StringUtils.isNotBlank(bo.getDeptName()), BizReportReceiver::getDeptName, bo.getDeptName());
+ lqw.eq(bo.getIsSign() != null, BizReportReceiver::getIsSign, bo.getIsSign());
+ lqw.eq(bo.getSignTime() != null, BizReportReceiver::getSignTime, bo.getSignTime());
+ lqw.eq(bo.getSignUserId() != null, BizReportReceiver::getSignUserId, bo.getSignUserId());
+ lqw.like(StringUtils.isNotBlank(bo.getSignUserName()), BizReportReceiver::getSignUserName, bo.getSignUserName());
+ return lqw;
+ }
+
+ /**
+ * 新增报送记录接收单位
+ *
+ * @param bo 报送记录接收单位
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(BizReportReceiverBo bo) {
+ BizReportReceiver add = MapstructUtils.convert(bo, BizReportReceiver.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改报送记录接收单位
+ *
+ * @param bo 报送记录接收单位
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(BizReportReceiverBo bo) {
+ BizReportReceiver update = MapstructUtils.convert(bo, BizReportReceiver.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(BizReportReceiver entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除报送记录接收单位信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportReplyServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportReplyServiceImpl.java
new file mode 100644
index 0000000..a087d4d
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/biz/service/impl/BizReportReplyServiceImpl.java
@@ -0,0 +1,135 @@
+package org.dromara.biz.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.biz.domain.bo.BizReportReplyBo;
+import org.dromara.biz.domain.vo.BizReportReplyVo;
+import org.dromara.biz.domain.BizReportReply;
+import org.dromara.biz.mapper.BizReportReplyMapper;
+import org.dromara.biz.service.IBizReportReplyService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 报送记录反馈Service业务层处理
+ *
+ * @author ruansee
+ * @date 2025-11-21
+ */
+@RequiredArgsConstructor
+@Service
+public class BizReportReplyServiceImpl implements IBizReportReplyService {
+
+ private final BizReportReplyMapper baseMapper;
+
+ /**
+ * 查询报送记录反馈
+ *
+ * @param id 主键
+ * @return 报送记录反馈
+ */
+ @Override
+ public BizReportReplyVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询报送记录反馈列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 报送记录反馈分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(BizReportReplyBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的报送记录反馈列表
+ *
+ * @param bo 查询条件
+ * @return 报送记录反馈列表
+ */
+ @Override
+ public List queryList(BizReportReplyBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(BizReportReplyBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.orderByAsc(BizReportReply::getId);
+ lqw.eq(bo.getReportId() != null, BizReportReply::getReportId, bo.getReportId());
+ lqw.eq(StringUtils.isNotBlank(bo.getContent()), BizReportReply::getContent, bo.getContent());
+ lqw.eq(bo.getUserId() != null, BizReportReply::getUserId, bo.getUserId());
+ lqw.eq(StringUtils.isNotBlank(bo.getMode()), BizReportReply::getMode, bo.getMode());
+ lqw.eq(StringUtils.isNotBlank(bo.getFileUrl()), BizReportReply::getFileUrl, bo.getFileUrl());
+ lqw.like(StringUtils.isNotBlank(bo.getFileName()), BizReportReply::getFileName, bo.getFileName());
+ return lqw;
+ }
+
+ /**
+ * 新增报送记录反馈
+ *
+ * @param bo 报送记录反馈
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(BizReportReplyBo bo) {
+ BizReportReply add = MapstructUtils.convert(bo, BizReportReply.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改报送记录反馈
+ *
+ * @param bo 报送记录反馈
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(BizReportReplyBo bo) {
+ BizReportReply update = MapstructUtils.convert(bo, BizReportReply.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(BizReportReply entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除报送记录反馈信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java
index 45b8418..cc06be0 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java
@@ -49,7 +49,7 @@ public class SysDeptController extends BaseController {
*/
@SaCheckPermission("system:dept:list")
@GetMapping("/list/exclude/{deptId}")
- public R> excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
+ public R> excludeChild(@PathVariable(value = "deptId", required = false) String deptId) {
List depts = deptService.selectDeptList(new SysDeptBo());
depts.removeIf(d -> d.getDeptId().equals(deptId)
|| StringUtils.splitList(d.getAncestors()).contains(Convert.toStr(deptId)));
@@ -63,7 +63,7 @@ public class SysDeptController extends BaseController {
*/
@SaCheckPermission("system:dept:query")
@GetMapping(value = "/{deptId}")
- public R getInfo(@PathVariable Long deptId) {
+ public R getInfo(@PathVariable String deptId) {
deptService.checkDeptDataScope(deptId);
return R.ok(deptService.selectDeptById(deptId));
}
@@ -88,7 +88,7 @@ public class SysDeptController extends BaseController {
@Log(title = "部门管理", businessType = BusinessType.UPDATE)
@PutMapping
public R edit(@Validated @RequestBody SysDeptBo dept) {
- Long deptId = dept.getDeptId();
+ String deptId = dept.getDeptId();
deptService.checkDeptDataScope(deptId);
if (!deptService.checkDeptNameUnique(dept)) {
return R.fail("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
@@ -112,7 +112,7 @@ public class SysDeptController extends BaseController {
@SaCheckPermission("system:dept:remove")
@Log(title = "部门管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{deptId}")
- public R remove(@PathVariable Long deptId) {
+ public R remove(@PathVariable String deptId) {
if (deptService.hasChildByDeptId(deptId)) {
return R.warn("存在下级部门,不允许删除");
}
@@ -133,7 +133,7 @@ public class SysDeptController extends BaseController {
*/
@SaCheckPermission("system:dept:query")
@GetMapping("/optionselect")
- public R> optionselect(@RequestParam(required = false) Long[] deptIds) {
+ public R> optionselect(@RequestParam(required = false) String[] deptIds) {
return R.ok(deptService.selectDeptByIds(deptIds == null ? null : List.of(deptIds)));
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java
index 5333a4a..63ac58e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java
@@ -118,7 +118,7 @@ public class SysPostController extends BaseController {
*/
@SaCheckPermission("system:post:query")
@GetMapping("/optionselect")
- public R> optionselect(@RequestParam(required = false) Long[] postIds, @RequestParam(required = false) Long deptId) {
+ public R> optionselect(@RequestParam(required = false) Long[] postIds, @RequestParam(required = false) String deptId) {
List list = new ArrayList<>();
if (ObjectUtil.isNotNull(deptId)) {
SysPostBo post = new SysPostBo();
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
index e1e868a..1866e55 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
@@ -134,7 +134,7 @@ public class SysUserController extends BaseController {
SysUserVo sysUser = userService.selectUserById(userId);
userInfoVo.setUser(sysUser);
userInfoVo.setRoleIds(roleService.selectRoleListByUserId(userId));
- Long deptId = sysUser.getDeptId();
+ String deptId = sysUser.getDeptId();
if (ObjectUtil.isNotNull(deptId)) {
SysPostBo postBo = new SysPostBo();
postBo.setDeptId(deptId);
@@ -217,7 +217,7 @@ public class SysUserController extends BaseController {
@SaCheckPermission("system:user:query")
@GetMapping("/optionselect")
public R> optionselect(@RequestParam(required = false) Long[] userIds,
- @RequestParam(required = false) Long deptId) {
+ @RequestParam(required = false) String deptId) {
return R.ok(userService.selectUserByIds(ArrayUtil.isEmpty(userIds) ? null : List.of(userIds), deptId));
}
@@ -284,7 +284,7 @@ public class SysUserController extends BaseController {
*/
@SaCheckPermission("system:user:list")
@GetMapping("/deptTree")
- public R>> deptTree(SysDeptBo dept) {
+ public R>> deptTree(SysDeptBo dept) {
return R.ok(deptService.selectDeptTreeList(dept));
}
@@ -293,7 +293,7 @@ public class SysUserController extends BaseController {
*/
@SaCheckPermission("system:user:list")
@GetMapping("/list/dept/{deptId}")
- public R> listByDept(@PathVariable @NotNull Long deptId) {
+ public R> listByDept(@PathVariable @NotNull String deptId) {
return R.ok(userService.selectUserListByDept(deptId));
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java
index e02564b..831f36a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java
@@ -27,12 +27,12 @@ public class SysDept extends TenantEntity {
* 部门ID
*/
@TableId(value = "dept_id")
- private Long deptId;
+ private String deptId;
/**
* 父部门ID
*/
- private Long parentId;
+ private String parentId;
/**
* 部门名称
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPost.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPost.java
index 2c985da..648da55 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPost.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPost.java
@@ -26,7 +26,7 @@ public class SysPost extends TenantEntity {
/**
* 部门id
*/
- private Long deptId;
+ private String deptId;
/**
* 岗位编码
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRoleDept.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRoleDept.java
index ba77694..fa4ec3f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRoleDept.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRoleDept.java
@@ -24,6 +24,6 @@ public class SysRoleDept {
/**
* 部门ID
*/
- private Long deptId;
+ private String deptId;
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java
index 3712f80..9e75a4f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java
@@ -30,7 +30,7 @@ public class SysUser extends TenantEntity {
/**
* 部门ID
*/
- private Long deptId;
+ private String deptId;
/**
* 用户账号
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java
index d950ee7..487363b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java
@@ -25,12 +25,12 @@ public class SysDeptBo extends BaseEntity {
/**
* 部门id
*/
- private Long deptId;
+ private String deptId;
/**
* 父部门ID
*/
- private Long parentId;
+ private String parentId;
/**
* 部门名称
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDictDataBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDictDataBo.java
index 042946c..746ee97 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDictDataBo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDictDataBo.java
@@ -70,7 +70,7 @@ public class SysDictDataBo extends BaseEntity {
/**
* 创建部门
*/
- private Long createDept;
+ private String createDept;
/**
* 备注
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPostBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPostBo.java
index 09805cd..cb70ce6 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPostBo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPostBo.java
@@ -29,12 +29,12 @@ public class SysPostBo extends BaseEntity {
* 部门id(单部门)
*/
@NotNull(message = "部门id不能为空")
- private Long deptId;
+ private String deptId;
/**
* 归属部门id(部门树)
*/
- private Long belongDeptId;
+ private String belongDeptId;
/**
* 岗位编码
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java
index 3207bad..6ac1eef 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java
@@ -81,7 +81,7 @@ public class SysRoleBo extends BaseEntity {
/**
* 部门组(数据权限)
*/
- private Long[] deptIds;
+ private String[] deptIds;
public SysRoleBo(Long roleId) {
this.roleId = roleId;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java
index 2669a81..9f34862 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java
@@ -32,7 +32,7 @@ public class SysUserBo extends BaseEntity {
/**
* 部门ID
*/
- private Long deptId;
+ private String deptId;
/**
* 用户账号
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/DeptTreeSelectVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/DeptTreeSelectVo.java
index 6f7db28..4f1eef1 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/DeptTreeSelectVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/DeptTreeSelectVo.java
@@ -21,6 +21,6 @@ public class DeptTreeSelectVo {
/**
* 下拉树结构列表
*/
- private List> depts;
+ private List> depts;
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java
index 518e260..5eb2512 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java
@@ -29,12 +29,12 @@ public class SysDeptVo implements Serializable {
* 部门id
*/
@ExcelProperty(value = "部门id")
- private Long deptId;
+ private String deptId;
/**
* 父部门id
*/
- private Long parentId;
+ private String parentId;
/**
* 父部门名称
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java
index 69be547..e15f07a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java
@@ -37,7 +37,7 @@ public class SysPostVo implements Serializable {
* 部门id
*/
@ExcelProperty(value = "部门id")
- private Long deptId;
+ private String deptId;
/**
* 岗位编码
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserImportVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserImportVo.java
index c34a23c..fccd0e5 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserImportVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserImportVo.java
@@ -33,7 +33,7 @@ public class SysUserImportVo implements Serializable {
* 部门ID
*/
@ExcelProperty(value = "部门编号")
- private Long deptId;
+ private String deptId;
/**
* 用户账号
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java
index 86249d2..0140ace 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java
@@ -41,7 +41,7 @@ public class SysUserVo implements Serializable {
/**
* 部门ID
*/
- private Long deptId;
+ private String deptId;
/**
* 用户账号
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java
index 66d3c50..8df4e27 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java
@@ -54,7 +54,7 @@ public interface SysDeptMapper extends BaseMapperPlus {
@DataPermission({
@DataColumn(key = "deptName", value = "dept_id")
})
- long countDeptById(Long deptId);
+ long countDeptById(String deptId);
/**
* 根据父部门ID查询其所有子部门的列表
@@ -62,7 +62,7 @@ public interface SysDeptMapper extends BaseMapperPlus {
* @param parentId 父部门ID
* @return 包含子部门的列表
*/
- default List selectListByParentId(Long parentId) {
+ default List selectListByParentId(String parentId) {
return this.selectList(new LambdaQueryWrapper()
.select(SysDept::getDeptId)
.apply(DataBaseHelper.findInSet(parentId, "ancestors")));
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDataScopeService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDataScopeService.java
index 3f252f7..684496a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDataScopeService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDataScopeService.java
@@ -21,6 +21,6 @@ public interface ISysDataScopeService {
* @param deptId 部门id
* @return 部门id组
*/
- String getDeptAndChild(Long deptId);
+ String getDeptAndChild(String deptId);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
index 466ec94..e884640 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
@@ -27,7 +27,7 @@ public interface ISysDeptService {
* @param dept 部门信息
* @return 部门树信息集合
*/
- List> selectDeptTreeList(SysDeptBo dept);
+ List> selectDeptTreeList(SysDeptBo dept);
/**
* 构建前端所需要下拉树结构
@@ -35,7 +35,7 @@ public interface ISysDeptService {
* @param depts 部门列表
* @return 下拉树结构列表
*/
- List> buildDeptTreeSelect(List depts);
+ List> buildDeptTreeSelect(List depts);
/**
* 根据角色ID查询部门树信息
@@ -51,7 +51,7 @@ public interface ISysDeptService {
* @param deptId 部门ID
* @return 部门信息
*/
- SysDeptVo selectDeptById(Long deptId);
+ SysDeptVo selectDeptById(String deptId);
/**
* 通过部门ID串查询部门
@@ -59,7 +59,7 @@ public interface ISysDeptService {
* @param deptIds 部门id串
* @return 部门列表信息
*/
- List selectDeptByIds(List deptIds);
+ List selectDeptByIds(List deptIds);
/**
* 根据ID查询所有子部门数(正常状态)
@@ -67,11 +67,11 @@ public interface ISysDeptService {
* @param deptId 部门ID
* @return 子部门数
*/
- long selectNormalChildrenDeptById(Long deptId);
+ long selectNormalChildrenDeptById(String deptId);
- List selectNormalChildrenDeptListById(Long deptId);
+ List selectNormalChildrenDeptListById(String deptId);
- List selectNormalChildrenDeptIdById(Long deptId);
+ List selectNormalChildrenDeptIdById(String deptId);
/**
* 是否存在部门子节点
@@ -79,7 +79,7 @@ public interface ISysDeptService {
* @param deptId 部门ID
* @return 结果
*/
- boolean hasChildByDeptId(Long deptId);
+ boolean hasChildByDeptId(String deptId);
/**
* 查询部门是否存在用户
@@ -87,7 +87,7 @@ public interface ISysDeptService {
* @param deptId 部门ID
* @return 结果 true 存在 false 不存在
*/
- boolean checkDeptExistUser(Long deptId);
+ boolean checkDeptExistUser(String deptId);
/**
* 校验部门名称是否唯一
@@ -102,7 +102,7 @@ public interface ISysDeptService {
*
* @param deptId 部门id
*/
- void checkDeptDataScope(Long deptId);
+ void checkDeptDataScope(String deptId);
/**
* 新增保存部门信息
@@ -126,5 +126,5 @@ public interface ISysDeptService {
* @param deptId 部门ID
* @return 结果
*/
- int deleteDeptById(Long deptId);
+ int deleteDeptById(String deptId);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java
index a760d49..0a41f23 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java
@@ -94,7 +94,7 @@ public interface ISysPostService {
* @param deptId 部门id
* @return 结果
*/
- long countPostByDeptId(Long deptId);
+ long countPostByDeptId(String deptId);
/**
* 删除岗位信息
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
index 0325a25..8397534 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
@@ -73,7 +73,7 @@ public interface ISysUserService {
* @param deptId 部门id
* @return 用户列表信息
*/
- List selectUserByIds(List userIds, Long deptId);
+ List selectUserByIds(List userIds, String deptId);
/**
* 根据用户ID查询用户所属角色组
@@ -218,5 +218,5 @@ public interface ISysUserService {
* @param deptId 部门id
* @return 结果
*/
- List selectUserListByDept(Long deptId);
+ List selectUserListByDept(String deptId);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java
index 12a5072..18349a2 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java
@@ -62,12 +62,12 @@ public class SysDataScopeServiceImpl implements ISysDataScopeService {
*/
@Cacheable(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, key = "#deptId", condition = "#deptId != null")
@Override
- public String getDeptAndChild(Long deptId) {
+ public String getDeptAndChild(String deptId) {
if (ObjectUtil.isNull(deptId)) {
return "-1";
}
List deptList = deptMapper.selectListByParentId(deptId);
- List ids = StreamUtils.toList(deptList, SysDept::getDeptId);
+ List ids = StreamUtils.toList(deptList, SysDept::getDeptId);
ids.add(deptId);
if (CollUtil.isNotEmpty(ids)) {
return StreamUtils.join(ids, Convert::toStr);
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
index ac06be9..2584fe1 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
@@ -69,7 +69,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @return 部门树信息集合
*/
@Override
- public List> selectDeptTreeList(SysDeptBo bo) {
+ public List> selectDeptTreeList(SysDeptBo bo) {
LambdaQueryWrapper lqw = buildQueryWrapper(bo);
List depts = baseMapper.selectDeptList(lqw);
return buildDeptTreeSelect(depts);
@@ -97,23 +97,23 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @return 下拉树结构列表
*/
@Override
- public List> buildDeptTreeSelect(List depts) {
+ public List> buildDeptTreeSelect(List depts) {
if (CollUtil.isEmpty(depts)) {
return CollUtil.newArrayList();
}
// 获取当前列表中每一个节点的parentId,然后在列表中查找是否有id与其parentId对应,若无对应,则表明此时节点列表中,该节点在当前列表中属于顶级节点
- List> treeList = CollUtil.newArrayList();
+ List> treeList = CollUtil.newArrayList();
for (SysDeptVo d : depts) {
- Long parentId = d.getParentId();
- SysDeptVo sysDeptVo = StreamUtils.findFirst(depts, it -> it.getDeptId().longValue() == parentId);
+ String parentId = d.getParentId();
+ SysDeptVo sysDeptVo = StreamUtils.findFirst(depts, it -> it.getDeptId().equals(parentId));
if (ObjectUtil.isNull(sysDeptVo)) {
- List> trees = TreeBuildUtils.build(depts, parentId, (dept, tree) ->
+ List> trees = TreeBuildUtils.build(depts, parentId, (dept, tree) ->
tree.setId(dept.getDeptId())
.setParentId(dept.getParentId())
.setName(dept.getDeptName())
.setWeight(dept.getOrderNum())
.putExtra("disabled", SystemConstants.DISABLE.equals(dept.getStatus())));
- Tree tree = StreamUtils.findFirst(trees, it -> it.getId().longValue() == d.getDeptId());
+ Tree tree = StreamUtils.findFirst(trees, it -> it.getId().equals(d.getDeptId()));
treeList.add(tree);
}
}
@@ -140,7 +140,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
*/
@Cacheable(cacheNames = CacheNames.SYS_DEPT, key = "#deptId")
@Override
- public SysDeptVo selectDeptById(Long deptId) {
+ public SysDeptVo selectDeptById(String deptId) {
SysDeptVo dept = baseMapper.selectVoById(deptId);
if (ObjectUtil.isNull(dept)) {
return null;
@@ -152,7 +152,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
}
@Override
- public List selectDeptByIds(List deptIds) {
+ public List selectDeptByIds(List deptIds) {
return baseMapper.selectDeptList(new LambdaQueryWrapper()
.select(SysDept::getDeptId, SysDept::getDeptName, SysDept::getLeader)
.eq(SysDept::getStatus, SystemConstants.NORMAL)
@@ -168,7 +168,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
@Override
public String selectDeptNameByIds(String deptIds) {
List list = new ArrayList<>();
- for (Long id : StringUtils.splitTo(deptIds, Convert::toLong)) {
+ for (String id : StringUtils.splitTo(deptIds, Object::toString)) {
SysDeptVo vo = SpringUtils.getAopProxy(this).selectDeptById(id);
if (ObjectUtil.isNotNull(vo)) {
list.add(vo.getDeptName());
@@ -184,7 +184,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @return 返回该部门的负责人ID
*/
@Override
- public Long selectDeptLeaderById(Long deptId) {
+ public Long selectDeptLeaderById(String deptId) {
SysDeptVo vo = SpringUtils.getAopProxy(this).selectDeptById(deptId);
return vo.getLeader();
}
@@ -209,7 +209,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @return 子部门数
*/
@Override
- public long selectNormalChildrenDeptById(Long deptId) {
+ public long selectNormalChildrenDeptById(String deptId) {
return baseMapper.selectCount(new LambdaQueryWrapper()
.eq(SysDept::getStatus, SystemConstants.NORMAL)
.apply(DataBaseHelper.findInSet(deptId, "ancestors")));
@@ -221,7 +221,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @param deptId 部门ID
* @return 子部门
*/
- public List selectNormalChildrenDeptListById(Long deptId) {
+ public List selectNormalChildrenDeptListById(String deptId) {
return baseMapper.selectList(new LambdaQueryWrapper()
.eq(SysDept::getStatus, SystemConstants.NORMAL)
.apply(DataBaseHelper.findInSet(deptId, "ancestors")));
@@ -233,7 +233,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @param deptId 部门ID
* @return 子部门id
*/
- public List selectNormalChildrenDeptIdById(Long deptId) {
+ public List selectNormalChildrenDeptIdById(String deptId) {
List ancestors = baseMapper.selectList(new LambdaQueryWrapper()
.eq(SysDept::getStatus, SystemConstants.NORMAL)
.apply(DataBaseHelper.findInSet(deptId, "ancestors")));
@@ -248,7 +248,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @return 结果
*/
@Override
- public boolean hasChildByDeptId(Long deptId) {
+ public boolean hasChildByDeptId(String deptId) {
return baseMapper.exists(new LambdaQueryWrapper()
.eq(SysDept::getParentId, deptId));
}
@@ -260,7 +260,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @return 结果 true 存在 false 不存在
*/
@Override
- public boolean checkDeptExistUser(Long deptId) {
+ public boolean checkDeptExistUser(String deptId) {
return userMapper.exists(new LambdaQueryWrapper()
.eq(SysUser::getDeptId, deptId));
}
@@ -286,7 +286,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @param deptId 部门id
*/
@Override
- public void checkDeptDataScope(Long deptId) {
+ public void checkDeptDataScope(String deptId) {
if (ObjectUtil.isNull(deptId)) {
return;
}
@@ -377,7 +377,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @param newAncestors 新的父ID集合
* @param oldAncestors 旧的父ID集合
*/
- private void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) {
+ private void updateDeptChildren(String deptId, String newAncestors, String oldAncestors) {
List children = baseMapper.selectList(new LambdaQueryWrapper()
.apply(DataBaseHelper.findInSet(deptId, "ancestors")));
List list = new ArrayList<>();
@@ -405,7 +405,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
@CacheEvict(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, key = "#deptId")
})
@Override
- public int deleteDeptById(Long deptId) {
+ public int deleteDeptById(String deptId) {
return baseMapper.deleteById(deptId);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java
index 5888985..1f710f6 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java
@@ -89,7 +89,7 @@ public class SysPostServiceImpl implements ISysPostService, PostService {
//部门树搜索
wrapper.and(x -> {
List deptList = deptMapper.selectListByParentId(bo.getBelongDeptId());
- List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
+ List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
deptIds.add(bo.getBelongDeptId());
x.in(SysPost::getDeptId, deptIds);
});
@@ -190,7 +190,7 @@ public class SysPostServiceImpl implements ISysPostService, PostService {
* @return 结果
*/
@Override
- public long countPostByDeptId(Long deptId) {
+ public long countPostByDeptId(String deptId) {
return baseMapper.selectCount(new LambdaQueryWrapper().eq(SysPost::getDeptId, deptId));
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
index 0a2e485..133b498 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
@@ -374,7 +374,7 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService {
int rows = 1;
// 新增角色与部门(数据权限)管理
List list = new ArrayList<>();
- for (Long deptId : role.getDeptIds()) {
+ for (String deptId : role.getDeptIds()) {
SysRoleDept rd = new SysRoleDept();
rd.setRoleId(role.getRoleId());
rd.setDeptId(deptId);
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java
index 23dd052..904bd88 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java
@@ -80,17 +80,17 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
.between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()),
SysPost::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime());
if (StringUtils.isNotBlank(taskQuery.getGroupId())) {
- Long belongDeptId = Long.valueOf(taskQuery.getGroupId());
+ String belongDeptId = (taskQuery.getGroupId());
wrapper.and(x -> {
List deptList = deptMapper.selectListByParentId(belongDeptId);
- List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
+ List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
deptIds.add(belongDeptId);
x.in(SysPost::getDeptId, deptIds);
});
}
Page page = postMapper.selectPagePostList(pageQuery.build(), wrapper);
// 使用封装的字段映射方法进行转换
- List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
+ List handlers = TaskAssigneeDTO.convertToHandlerList2(page.getRecords(),
SysPostVo::getPostId, SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptId, SysPostVo::getCreateTime);
return new TaskAssigneeDTO(page.getTotal(), handlers);
}
@@ -117,16 +117,16 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
if (StringUtils.isNotBlank(taskQuery.getGroupId())) {
//部门树搜索
wrapper.and(x -> {
- Long parentId = Long.valueOf(taskQuery.getGroupId());
+ String parentId = (taskQuery.getGroupId());
List deptList = deptMapper.selectListByParentId(parentId);
- List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
+ List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
deptIds.add(parentId);
x.in(SysDept::getDeptId, deptIds);
});
}
Page page = deptMapper.selectPageDeptList(pageQuery.build(), wrapper);
// 使用封装的字段映射方法进行转换
- List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
+ List handlers = TaskAssigneeDTO.convertToHandlerList3(page.getRecords(),
SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentId, SysDeptVo::getCreateTime);
return new TaskAssigneeDTO(page.getTotal(), handlers);
}
@@ -151,16 +151,16 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
if (StringUtils.isNotBlank(taskQuery.getGroupId())) {
//部门树搜索
wrapper.and(x -> {
- Long parentId = Long.valueOf(taskQuery.getGroupId());
+ String parentId = (taskQuery.getGroupId());
List deptList = deptMapper.selectListByParentId(parentId);
- List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
+ List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
deptIds.add(parentId);
x.in("u.dept_id", deptIds);
});
}
Page page = userMapper.selectPageUserList(pageQuery.build(), wrapper);
// 使用封装的字段映射方法进行转换
- List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
+ List handlers = TaskAssigneeDTO.convertToHandlerList2(page.getRecords(),
SysUserVo::getUserId, SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime);
return new TaskAssigneeDTO(page.getTotal(), handlers);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java
index f31bd30..a168796 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java
@@ -140,10 +140,10 @@ public class SysTenantServiceImpl implements ISysTenantService {
SysDept dept = new SysDept();
dept.setTenantId(tenantId);
dept.setDeptName(bo.getCompanyName());
- dept.setParentId(Constants.TOP_PARENT_ID);
+ dept.setParentId(Constants.TOP_PARENT_ID.toString());
dept.setAncestors(Constants.TOP_PARENT_ID.toString());
deptMapper.insert(dept);
- Long deptId = dept.getDeptId();
+ String deptId = dept.getDeptId();
// 角色和部门关联表
SysRoleDept roleDept = new SysRoleDept();
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
index 4081170..4fe63d7 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
@@ -86,7 +86,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
"u.create_time", params.get("beginTime"), params.get("endTime"))
.and(ObjectUtil.isNotNull(user.getDeptId()), w -> {
List deptList = deptMapper.selectListByParentId(user.getDeptId());
- List ids = StreamUtils.toList(deptList, SysDept::getDeptId);
+ List ids = StreamUtils.toList(deptList, SysDept::getDeptId);
ids.add(user.getDeptId());
w.in("u.dept_id", ids);
}).orderByAsc("u.user_id");
@@ -181,7 +181,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
* @return 用户列表信息
*/
@Override
- public List selectUserByIds(List userIds, Long deptId) {
+ public List selectUserByIds(List userIds, String deptId) {
return baseMapper.selectUserList(new LambdaQueryWrapper()
.select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName)
.eq(SysUser::getStatus, SystemConstants.NORMAL)
@@ -544,7 +544,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
* @return 用户信息集合信息
*/
@Override
- public List