From 73f5b82df781d2b061ba24d29182f6898b5535d9 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期日, 28 十二月 2025 14:34:04 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceAttendancerecords.java                        |  156 ++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/BaseOrganization.java                                |  169 ++
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatemaintenanceServiceImpl.java       |   58 +
 ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoReportMapper.xml                     |   32 
 ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoMapper.xml                           |   15 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java                         |   16 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMeetingParticipantController.java       |  116 ++
 ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm                                                   |   10 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/VUserOrgServiceImpl.java                       |   72 +
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceTrainingRecords.java                          |  150 ++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java                               |   26 
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/VUserOrgMapper.java                                  |   25 
 ruoyi-project/src/main/resources/mapper/project/ServiceDonatemaintenanceMapper.xml                        |   54 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceMeetingParticipantService.java              |   23 
 ruoyi-generator/src/main/resources/generator.yml                                                          |    8 
 ruoyi-project/src/main/resources/mapper/project/VUserOrgMapper.xml                                        |   60 +
 ruoyi-admin/src/main/resources/application-srm.yml                                                        |    4 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoReportServiceImpl.java    |   67 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewinitiateServiceImpl.java   |   30 
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceTrainingRecordsService.java                 |   23 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceMeetingParticipant.java                       |  102 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTransportFileController.java            |    2 
 ruoyi-project/src/main/java/com/ruoyi/project/service/IVUserOrgService.java                               |   24 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTrainingRecordsServiceImpl.java         |  109 ++
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceAttendancerecordsService.java               |   23 
 ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java                        |  222 +--
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceTrainingRecordsMapper.java                    |   25 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceMeeting.java                                  |  168 +++
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceMeetingServiceImpl.java                 |  117 ++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceEthicalreviewinitiate.java                    |   58 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTransportServiceImpl.java               |    9 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatemaintenanceController.java        |  105 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTransportController.java                |   11 
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonatemaintenanceMapper.java                  |   25 
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatebaseinfoReportService.java            |    7 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/BaseOrganizationServiceImpl.java               |   12 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java          |   17 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTrainingRecordsController.java          |  116 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java     |   32 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/VUserOrgController.java                        |  103 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceAttendancerecordsController.java        |  110 ++
 ruoyi-project/src/main/resources/mapper/project/BaseOrganizationMapper.xml                                |   14 
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceMeetingParticipantMapper.java                 |   25 
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceMeetingMapper.java                            |   25 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatemaintenance.java                        |   84 +
 ruoyi-admin/pom.xml                                                                                       |    2 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceMeetingParticipantServiceImpl.java      |   78 +
 ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml                    |   25 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/VUserOrg.java                                        |   84 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatemaintenanceService.java               |   24 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfo.java                           |   33 
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceMeetingService.java                         |   23 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMeetingController.java                  |  116 ++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java                     |   52 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportFileController.java |    2 
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceAttendancerecordsMapper.java                  |   26 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceAttendancerecordsServiceImpl.java       |   91 +
 57 files changed, 2,955 insertions(+), 260 deletions(-)

diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 402ce1e..8a5c073 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -10,7 +10,7 @@
     <modelVersion>4.0.0</modelVersion>
     <!--    <packaging>war</packaging>-->
         <packaging>jar</packaging>
-    <artifactId>smartor-opo</artifactId>
+    <artifactId>smartor-opo-qd</artifactId>
 
     <description>
         web鏈嶅姟鍏ュ彛
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceAttendancerecordsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceAttendancerecordsController.java
new file mode 100644
index 0000000..2a1c23f
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceAttendancerecordsController.java
@@ -0,0 +1,110 @@
+package com.ruoyi.web.controller.project;
+
+import java.util.Arrays;
+import java.util.List;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.project.domain.ServiceAttendancerecords;
+import com.ruoyi.project.service.IServiceAttendancerecordsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 鑰冨嫟璁板綍Controller
+ *
+ * @author ls
+ * @date 2025-12-28
+ */
+@Api(description = "鑰冨嫟璁板綍")
+@RestController
+@RequestMapping("/project/attendancerecords")
+public class ServiceAttendancerecordsController extends BaseController {
+    @Autowired
+    private IServiceAttendancerecordsService serviceAttendancerecordsService;
+
+    /**
+     * 鏌ヨ鑰冨嫟璁板綍鍒楄〃
+     */
+    @ApiOperation("鏌ヨ鑰冨嫟璁板綍鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('project:attendancerecords:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(ServiceAttendancerecords serviceAttendancerecords) {
+        startPage();
+        List<ServiceAttendancerecords> list = serviceAttendancerecordsService.queryList(serviceAttendancerecords);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭鑰冨嫟璁板綍鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭鑰冨嫟璁板綍鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('project:attendancerecords:export')")
+    @Log(title = "鑰冨嫟璁板綍", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(ServiceAttendancerecords serviceAttendancerecords) {
+        List<ServiceAttendancerecords> list = serviceAttendancerecordsService.queryList(serviceAttendancerecords);
+        ExcelUtil<ServiceAttendancerecords> util = new ExcelUtil<ServiceAttendancerecords>(ServiceAttendancerecords.class);
+        return util.exportExcel(list, "鑰冨嫟璁板綍鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇鑰冨嫟璁板綍璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇鑰冨嫟璁板綍璇︾粏淇℃伅")
+    // @PreAuthorize("@ss.hasPermi('project:attendancerecords:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(serviceAttendancerecordsService.getById(id));
+    }
+
+    /**
+     * 鏂板鑰冨嫟璁板綍
+     */
+    @ApiOperation("鏂板鑰冨嫟璁板綍")
+    // @PreAuthorize("@ss.hasPermi('project:attendancerecords:add')")
+    @Log(title = "鑰冨嫟璁板綍", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @RepeatSubmit
+    public AjaxResult add(@RequestBody ServiceAttendancerecords serviceAttendancerecords) {
+        return toAjax(serviceAttendancerecordsService.save(serviceAttendancerecords));
+    }
+
+    /**
+     * 淇敼鑰冨嫟璁板綍
+     */
+    @ApiOperation("淇敼鑰冨嫟璁板綍")
+    // @PreAuthorize("@ss.hasPermi('project:attendancerecords:edit')")
+    @Log(title = "鑰冨嫟璁板綍", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @RepeatSubmit
+    public AjaxResult edit(@RequestBody ServiceAttendancerecords serviceAttendancerecords) {
+        return toAjax(serviceAttendancerecordsService.updateById(serviceAttendancerecords));
+    }
+
+    /**
+     * 鍒犻櫎鑰冨嫟璁板綍
+     */
+    @ApiOperation("鍒犻櫎鑰冨嫟璁板綍")
+    // @PreAuthorize("@ss.hasPermi('project:attendancerecords:remove')")
+    @Log(title = "鑰冨嫟璁板綍", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(serviceAttendancerecordsService.removeByIds(Arrays.asList(ids)));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java
index 6589c33..ce38fdf 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java
@@ -5,17 +5,25 @@
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.project.common.IdGeneratorUtils;
 import com.ruoyi.project.domain.ServiceDonatebaseinfoReport;
 import com.ruoyi.project.domain.ServiceDonatebaseinfoReportFile;
+import com.ruoyi.project.domain.VUserOrg;
 import com.ruoyi.project.service.IServiceDonatebaseinfoReportFileService;
 import com.ruoyi.project.service.IServiceDonatebaseinfoReportService;
+import com.ruoyi.project.service.IVUserOrgService;
 import com.ruoyi.system.domain.SysConfig;
 import com.ruoyi.system.service.ISysConfigService;
+import com.sun.org.apache.bcel.internal.generic.NEW;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -30,7 +38,7 @@
  */
 @Api(description = "鎹愮尞涓婃姤鍩虹")
 @RestController
-@RequestMapping("/system/donatebaseinforeport")
+@RequestMapping("/project/donatebaseinforeport")
 public class ServiceDonatebaseinfoReportController extends BaseController {
     @Autowired
     private IServiceDonatebaseinfoReportService serviceDonatebaseinfoReportService;
@@ -38,6 +46,8 @@
     private IServiceDonatebaseinfoReportFileService serviceDonatebaseinfoReportFileService;
     @Autowired
     private ISysConfigService sysConfigService;
+    @Autowired
+    private IVUserOrgService vUserOrgService;
 
     /**
      * 鏌ヨ鎹愮尞涓婃姤鍩虹鍒楄〃
@@ -108,6 +118,18 @@
         //鐢熸垚妗堜緥涓婃姤ID
         String caseNo = String.valueOf(IdGeneratorUtils.nextId());
         serviceDonatebaseinfoReport.setCaseNo(caseNo);
+
+        //鑾峰彇鍗忚皟鍛樹俊鎭�
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        String userName = loginUser.getUser().getUserName();
+        VUserOrg vUserOrg= new VUserOrg();
+        vUserOrg.setUserName(userName);
+        List<VUserOrg> vUserOrgs = vUserOrgService.queryList(vUserOrg);
+        if(CollectionUtils.isNotEmpty(vUserOrgs)){
+            serviceDonatebaseinfoReport.setCoordinatorNo(vUserOrgs.get(0).getCoordinatorNo());
+            serviceDonatebaseinfoReport.setCoordinatorName(vUserOrgs.get(0).getCoordinatorName());
+        }
+
         boolean save = serviceDonatebaseinfoReportService.save(serviceDonatebaseinfoReport);
         //灏嗙敓鎴愮殑鏂囦欢鍦板潃瀛樺偍鍒版暟鎹簱涓�
         if (save)
@@ -123,10 +145,18 @@
     @PostMapping("/edit")
     @RepeatSubmit
     public AjaxResult edit(@RequestBody ServiceDonatebaseinfoReport serviceDonatebaseinfoReport) {
+        if (StringUtils.isEmpty(serviceDonatebaseinfoReport.getCaseNo())) {
+            throw new BaseException("妗堜緥缂栧彿涓虹┖锛岃妫�鏌ュ悗鍐嶄慨鏀�");
+        }
         boolean b = serviceDonatebaseinfoReportService.updateById(serviceDonatebaseinfoReport);
         if (b) {
             serviceDonatebaseinfoReportFileService.updateList(serviceDonatebaseinfoReport.getAnnexfilesList(), serviceDonatebaseinfoReport.getId(), serviceDonatebaseinfoReport.getCaseNo(), getNickName());
+            if (serviceDonatebaseinfoReport.getReportStatus().equals("3")) {
+                //濡傛灉鍚屾剰涓婃姤锛岄偅灏卞彲浠ュ缓妗d簡锛堝線 ServiceDonatebaseinfo鏂板锛�
+                serviceDonatebaseinfoReportService.createDocument(serviceDonatebaseinfoReport);
+            }
         }
+
         return toAjax(b);
     }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportFileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportFileController.java
index f34a4e4..81a99f4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportFileController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportFileController.java
@@ -25,7 +25,7 @@
  */
 @Api(description = "妗堜緥涓婃姤闄勪欢")
 @RestController
-@RequestMapping("/system/Donatebaseinfofile")
+@RequestMapping("/project/Donatebaseinfofile")
 public class ServiceDonatebaseinfoReportFileController extends BaseController {
     @Autowired
     private IServiceDonatebaseinfoReportFileService serviceDonatebaseinfoReportFileService;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatemaintenanceController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatemaintenanceController.java
new file mode 100644
index 0000000..1109d6b
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatemaintenanceController.java
@@ -0,0 +1,105 @@
+package com.ruoyi.web.controller.project;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.domain.ServiceDonatemaintenance;
+import com.ruoyi.project.service.IServiceDonatemaintenanceService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 渚涗綋缁存姢璁板綍Controller
+ *
+ * @author ruoyi
+ * @date 2025-12-27
+ */
+@Api(description = "渚涗綋缁存姢璁板綍")
+@RestController
+@RequestMapping("/project/donatemaintenance")
+public class ServiceDonatemaintenanceController extends BaseController {
+    @Autowired
+    private IServiceDonatemaintenanceService serviceDonatemaintenanceService;
+
+    /**
+     * 鏌ヨ渚涗綋缁存姢璁板綍鍒楄〃
+     */
+    @ApiOperation("鏌ヨ渚涗綋缁存姢璁板綍鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('system:donatemaintenance:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(ServiceDonatemaintenance serviceDonatemaintenance) {
+        startPage();
+        List<ServiceDonatemaintenance> list = serviceDonatemaintenanceService.queryList(serviceDonatemaintenance);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭渚涗綋缁存姢璁板綍鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭渚涗綋缁存姢璁板綍鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('system:donatemaintenance:export')")
+    @Log(title = "渚涗綋缁存姢璁板綍", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(ServiceDonatemaintenance serviceDonatemaintenance) {
+        List<ServiceDonatemaintenance> list = serviceDonatemaintenanceService.queryList(serviceDonatemaintenance);
+        ExcelUtil<ServiceDonatemaintenance> util = new ExcelUtil<ServiceDonatemaintenance>(ServiceDonatemaintenance.class);
+        return util.exportExcel(list, "渚涗綋缁存姢璁板綍鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇渚涗綋缁存姢璁板綍璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇渚涗綋缁存姢璁板綍璇︾粏淇℃伅")
+    // @PreAuthorize("@ss.hasPermi('system:donatemaintenance:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(serviceDonatemaintenanceService.getById(id));
+    }
+
+    /**
+     * 鏂板渚涗綋缁存姢璁板綍
+     */
+    @ApiOperation("鏂板渚涗綋缁存姢璁板綍")
+    // @PreAuthorize("@ss.hasPermi('system:donatemaintenance:add')")
+    @Log(title = "渚涗綋缁存姢璁板綍", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @RepeatSubmit
+    public AjaxResult add(@RequestBody ServiceDonatemaintenance serviceDonatemaintenance) {
+        return toAjax(serviceDonatemaintenanceService.save(serviceDonatemaintenance));
+    }
+
+    /**
+     * 淇敼渚涗綋缁存姢璁板綍
+     */
+    @ApiOperation("淇敼渚涗綋缁存姢璁板綍")
+    // @PreAuthorize("@ss.hasPermi('system:donatemaintenance:edit')")
+    @Log(title = "渚涗綋缁存姢璁板綍", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @RepeatSubmit
+    public AjaxResult edit(@RequestBody ServiceDonatemaintenance serviceDonatemaintenance) {
+        return toAjax(serviceDonatemaintenanceService.updateById(serviceDonatemaintenance));
+    }
+
+    /**
+     * 鍒犻櫎渚涗綋缁存姢璁板綍
+     */
+    @ApiOperation("鍒犻櫎渚涗綋缁存姢璁板綍")
+    // @PreAuthorize("@ss.hasPermi('system:donatemaintenance:remove')")
+    @Log(title = "渚涗綋缁存姢璁板綍", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{id}")
+    public AjaxResult remove(@PathVariable Long id) {
+        ServiceDonatemaintenance serviceDonatemaintenance = new ServiceDonatemaintenance();
+        serviceDonatemaintenance.setId(id);
+        serviceDonatemaintenance.setDelFlag(1);
+        return toAjax(serviceDonatemaintenanceService.updateById(serviceDonatemaintenance));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMeetingController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMeetingController.java
new file mode 100644
index 0000000..7076edf
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMeetingController.java
@@ -0,0 +1,116 @@
+package com.ruoyi.web.controller.project;
+
+import java.util.Arrays;
+import java.util.List;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.project.domain.ServiceMeeting;
+import com.ruoyi.project.service.IServiceMeetingService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 浼氳绾Controller
+ *
+ * @author ls
+ * @date 2025-12-28
+ */
+@Api(description = "浼氳绾")
+@RestController
+@RequestMapping("/project/meeting")
+public class ServiceMeetingController extends BaseController
+{
+    @Autowired
+    private IServiceMeetingService serviceMeetingService;
+
+    /**
+     * 鏌ヨ浼氳绾鍒楄〃
+     */
+    @ApiOperation("鏌ヨ浼氳绾鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('project:meeting:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(ServiceMeeting serviceMeeting)
+    {
+        startPage();
+        List<ServiceMeeting> list = serviceMeetingService.queryList(serviceMeeting);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭浼氳绾鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭浼氳绾鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('project:meeting:export')")
+    @Log(title = "浼氳绾", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(ServiceMeeting serviceMeeting)
+    {
+        List<ServiceMeeting> list = serviceMeetingService.queryList(serviceMeeting);
+        ExcelUtil<ServiceMeeting> util = new ExcelUtil<ServiceMeeting>(ServiceMeeting.class);
+        return util.exportExcel(list, "浼氳绾鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇浼氳绾璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇浼氳绾璇︾粏淇℃伅")
+    // @PreAuthorize("@ss.hasPermi('project:meeting:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Integer id)
+    {
+        return AjaxResult.success(serviceMeetingService.getById(id));
+    }
+
+    /**
+     * 鏂板浼氳绾
+     */
+    @ApiOperation("鏂板浼氳绾")
+    // @PreAuthorize("@ss.hasPermi('project:meeting:add')")
+    @Log(title = "浼氳绾", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @RepeatSubmit
+    public AjaxResult add(@RequestBody ServiceMeeting serviceMeeting)
+    {
+        return toAjax(serviceMeetingService.save(serviceMeeting));
+    }
+
+    /**
+     * 淇敼浼氳绾
+     */
+    @ApiOperation("淇敼浼氳绾")
+    // @PreAuthorize("@ss.hasPermi('project:meeting:edit')")
+    @Log(title = "浼氳绾", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @RepeatSubmit
+    public AjaxResult edit(@RequestBody ServiceMeeting serviceMeeting)
+    {
+        return toAjax(serviceMeetingService.updateById(serviceMeeting));
+    }
+
+    /**
+     * 鍒犻櫎浼氳绾
+     */
+    @ApiOperation("鍒犻櫎浼氳绾")
+    // @PreAuthorize("@ss.hasPermi('project:meeting:remove')")
+    @Log(title = "浼氳绾", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Integer[] ids)
+    {
+        return toAjax(serviceMeetingService.removeByIds(Arrays.asList(ids)));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMeetingParticipantController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMeetingParticipantController.java
new file mode 100644
index 0000000..c72fec3
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMeetingParticipantController.java
@@ -0,0 +1,116 @@
+package com.ruoyi.web.controller.project;
+
+import java.util.Arrays;
+import java.util.List;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.project.domain.ServiceMeetingParticipant;
+import com.ruoyi.project.service.IServiceMeetingParticipantService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 鍙備細浜哄憳Controller
+ *
+ * @author ls
+ * @date 2025-12-28
+ */
+@Api(description = "鍙備細浜哄憳")
+@RestController
+@RequestMapping("/project/participant")
+public class ServiceMeetingParticipantController extends BaseController
+{
+    @Autowired
+    private IServiceMeetingParticipantService serviceMeetingParticipantService;
+
+    /**
+     * 鏌ヨ鍙備細浜哄憳鍒楄〃
+     */
+    @ApiOperation("鏌ヨ鍙備細浜哄憳鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('project:participant:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(ServiceMeetingParticipant serviceMeetingParticipant)
+    {
+        startPage();
+        List<ServiceMeetingParticipant> list = serviceMeetingParticipantService.queryList(serviceMeetingParticipant);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭鍙備細浜哄憳鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭鍙備細浜哄憳鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('project:participant:export')")
+    @Log(title = "鍙備細浜哄憳", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(ServiceMeetingParticipant serviceMeetingParticipant)
+    {
+        List<ServiceMeetingParticipant> list = serviceMeetingParticipantService.queryList(serviceMeetingParticipant);
+        ExcelUtil<ServiceMeetingParticipant> util = new ExcelUtil<ServiceMeetingParticipant>(ServiceMeetingParticipant.class);
+        return util.exportExcel(list, "鍙備細浜哄憳鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇鍙備細浜哄憳璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇鍙備細浜哄憳璇︾粏淇℃伅")
+    // @PreAuthorize("@ss.hasPermi('project:participant:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Integer id)
+    {
+        return AjaxResult.success(serviceMeetingParticipantService.getById(id));
+    }
+
+    /**
+     * 鏂板鍙備細浜哄憳
+     */
+    @ApiOperation("鏂板鍙備細浜哄憳")
+    // @PreAuthorize("@ss.hasPermi('project:participant:add')")
+    @Log(title = "鍙備細浜哄憳", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @RepeatSubmit
+    public AjaxResult add(@RequestBody ServiceMeetingParticipant serviceMeetingParticipant)
+    {
+        return toAjax(serviceMeetingParticipantService.save(serviceMeetingParticipant));
+    }
+
+    /**
+     * 淇敼鍙備細浜哄憳
+     */
+    @ApiOperation("淇敼鍙備細浜哄憳")
+    // @PreAuthorize("@ss.hasPermi('project:participant:edit')")
+    @Log(title = "鍙備細浜哄憳", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @RepeatSubmit
+    public AjaxResult edit(@RequestBody ServiceMeetingParticipant serviceMeetingParticipant)
+    {
+        return toAjax(serviceMeetingParticipantService.updateById(serviceMeetingParticipant));
+    }
+
+    /**
+     * 鍒犻櫎鍙備細浜哄憳
+     */
+    @ApiOperation("鍒犻櫎鍙備細浜哄憳")
+    // @PreAuthorize("@ss.hasPermi('project:participant:remove')")
+    @Log(title = "鍙備細浜哄憳", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Integer[] ids)
+    {
+        return toAjax(serviceMeetingParticipantService.removeByIds(Arrays.asList(ids)));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTrainingRecordsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTrainingRecordsController.java
new file mode 100644
index 0000000..aa14a09
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTrainingRecordsController.java
@@ -0,0 +1,116 @@
+package com.ruoyi.web.controller.project;
+
+import java.util.Arrays;
+import java.util.List;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.project.domain.ServiceTrainingRecords;
+import com.ruoyi.project.service.IServiceTrainingRecordsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 浜哄憳杩涗慨绠$悊Controller
+ *
+ * @author ls
+ * @date 2025-12-28
+ */
+@Api(description = "浜哄憳杩涗慨绠$悊")
+@RestController
+@RequestMapping("/project/records")
+public class ServiceTrainingRecordsController extends BaseController
+{
+    @Autowired
+    private IServiceTrainingRecordsService serviceTrainingRecordsService;
+
+    /**
+     * 鏌ヨ浜哄憳杩涗慨绠$悊鍒楄〃
+     */
+    @ApiOperation("鏌ヨ浜哄憳杩涗慨绠$悊鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('project:records:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(ServiceTrainingRecords serviceTrainingRecords)
+    {
+        startPage();
+        List<ServiceTrainingRecords> list = serviceTrainingRecordsService.queryList(serviceTrainingRecords);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭浜哄憳杩涗慨绠$悊鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭浜哄憳杩涗慨绠$悊鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('project:records:export')")
+    @Log(title = "浜哄憳杩涗慨绠$悊", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(ServiceTrainingRecords serviceTrainingRecords)
+    {
+        List<ServiceTrainingRecords> list = serviceTrainingRecordsService.queryList(serviceTrainingRecords);
+        ExcelUtil<ServiceTrainingRecords> util = new ExcelUtil<ServiceTrainingRecords>(ServiceTrainingRecords.class);
+        return util.exportExcel(list, "浜哄憳杩涗慨绠$悊鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇浜哄憳杩涗慨绠$悊璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇浜哄憳杩涗慨绠$悊璇︾粏淇℃伅")
+    // @PreAuthorize("@ss.hasPermi('project:records:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(serviceTrainingRecordsService.getById(id));
+    }
+
+    /**
+     * 鏂板浜哄憳杩涗慨绠$悊
+     */
+    @ApiOperation("鏂板浜哄憳杩涗慨绠$悊")
+    // @PreAuthorize("@ss.hasPermi('project:records:add')")
+    @Log(title = "浜哄憳杩涗慨绠$悊", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @RepeatSubmit
+    public AjaxResult add(@RequestBody ServiceTrainingRecords serviceTrainingRecords)
+    {
+        return toAjax(serviceTrainingRecordsService.save(serviceTrainingRecords));
+    }
+
+    /**
+     * 淇敼浜哄憳杩涗慨绠$悊
+     */
+    @ApiOperation("淇敼浜哄憳杩涗慨绠$悊")
+    // @PreAuthorize("@ss.hasPermi('project:records:edit')")
+    @Log(title = "浜哄憳杩涗慨绠$悊", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @RepeatSubmit
+    public AjaxResult edit(@RequestBody ServiceTrainingRecords serviceTrainingRecords)
+    {
+        return toAjax(serviceTrainingRecordsService.updateById(serviceTrainingRecords));
+    }
+
+    /**
+     * 鍒犻櫎浜哄憳杩涗慨绠$悊
+     */
+    @ApiOperation("鍒犻櫎浜哄憳杩涗慨绠$悊")
+    // @PreAuthorize("@ss.hasPermi('project:records:remove')")
+    @Log(title = "浜哄憳杩涗慨绠$悊", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(serviceTrainingRecordsService.removeByIds(Arrays.asList(ids)));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTransportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTransportController.java
index 1a9e3ed..9d04165 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTransportController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTransportController.java
@@ -28,7 +28,7 @@
  */
 @Api(description = "渚涜�呰浆杩愮櫥璁�")
 @RestController
-@RequestMapping("/system/transport")
+@RequestMapping("/project/transport")
 public class ServiceTransportController extends BaseController {
     @Autowired
     private IServiceTransportService serviceTransportService;
@@ -118,8 +118,11 @@
     @ApiOperation("鍒犻櫎渚涜�呰浆杩愮櫥璁�")
     // @PreAuthorize("@ss.hasPermi('system:transport:remove')")
     @Log(title = "渚涜�呰浆杩愮櫥璁�", businessType = BusinessType.DELETE)
-    @GetMapping("/remove/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids) {
-        return toAjax(serviceTransportService.removeByIds(Arrays.asList(ids)));
+    @GetMapping("/remove/{id}")
+    public AjaxResult remove(@PathVariable Long id) {
+        ServiceTransport serviceTransport = new ServiceTransport();
+        serviceTransport.setId(id);
+        serviceTransport.setDelFlag(1);
+        return toAjax(serviceTransportService.updateById(serviceTransport));
     }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTransportFileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTransportFileController.java
index 4d1d369..2b9f123 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTransportFileController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTransportFileController.java
@@ -26,7 +26,7 @@
  */
 @Api(description = "渚涜�呰浆杩愮櫥璁伴檮浠�")
 @RestController
-@RequestMapping("/system/transportfile")
+@RequestMapping("/project/transportfile")
 public class ServiceTransportFileController extends BaseController {
     @Autowired
     private IServiceTransportFileService serviceTransportFileService;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/VUserOrgController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/VUserOrgController.java
new file mode 100644
index 0000000..66a6070
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/VUserOrgController.java
@@ -0,0 +1,103 @@
+package com.ruoyi.web.controller.project;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.domain.VUserOrg;
+import com.ruoyi.project.service.IVUserOrgService;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * VIEWController
+ *
+ * @author ruoyi
+ * @date 2025-12-27
+ */
+@Api(description = "VIEW")
+@RestController
+@RequestMapping("/project/org")
+public class VUserOrgController extends BaseController {
+    @Autowired
+    private IVUserOrgService vUserOrgService;
+
+    /**
+     * 鏌ヨVIEW鍒楄〃
+     */
+    @ApiOperation("鏌ヨVIEW鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('system:org:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(VUserOrg vUserOrg) {
+        startPage();
+        List<VUserOrg> list = vUserOrgService.queryList(vUserOrg);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭VIEW鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭VIEW鍒楄〃")
+    // @PreAuthorize("@ss.hasPermi('system:org:export')")
+    @Log(title = "VIEW", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(VUserOrg vUserOrg) {
+        List<VUserOrg> list = vUserOrgService.queryList(vUserOrg);
+        ExcelUtil<VUserOrg> util = new ExcelUtil<VUserOrg>(VUserOrg.class);
+        return util.exportExcel(list, "VIEW鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇VIEW璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇VIEW璇︾粏淇℃伅")
+    // @PreAuthorize("@ss.hasPermi('system:org:query')")
+    @GetMapping(value = "/getInfo/{userId}")
+    public AjaxResult getInfo(@PathVariable("userId") Long userId) {
+        return AjaxResult.success(vUserOrgService.getById(userId));
+    }
+
+    /**
+     * 鏂板VIEW
+     */
+    @ApiOperation("鏂板VIEW")
+    // @PreAuthorize("@ss.hasPermi('system:org:add')")
+    @Log(title = "VIEW", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @RepeatSubmit
+    public AjaxResult add(@RequestBody VUserOrg vUserOrg) {
+        return toAjax(vUserOrgService.save(vUserOrg));
+    }
+
+    /**
+     * 淇敼VIEW
+     */
+    @ApiOperation("淇敼VIEW")
+    // @PreAuthorize("@ss.hasPermi('system:org:edit')")
+    @Log(title = "VIEW", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @RepeatSubmit
+    public AjaxResult edit(@RequestBody VUserOrg vUserOrg) {
+        return toAjax(vUserOrgService.updateById(vUserOrg));
+    }
+
+    /**
+     * 鍒犻櫎VIEW
+     */
+    @ApiOperation("鍒犻櫎VIEW")
+    // @PreAuthorize("@ss.hasPermi('system:org:remove')")
+    @Log(title = "VIEW", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{userIds}")
+    public AjaxResult remove(@PathVariable Long[] userIds) {
+        return toAjax(vUserOrgService.removeByIds(Arrays.asList(userIds)));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index 38cc839..5cd5425 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -15,12 +15,16 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.web.service.SysLoginService;
 import com.ruoyi.framework.web.service.SysPermissionService;
+import com.ruoyi.project.domain.BaseOrganization;
+import com.ruoyi.project.mapper.BaseOrganizationMapper;
 import com.ruoyi.project.service.DingTalkService;
+import com.ruoyi.project.service.IBaseOrganizationService;
 import com.ruoyi.system.service.ISysMenuService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -50,6 +54,9 @@
 
     @Autowired
     private DingTalkService dingTalkService;
+
+    @Autowired
+    private IBaseOrganizationService baseOrganizationService;
 
 
     /**
@@ -133,6 +140,15 @@
         // 鏉冮檺闆嗗悎
         Set<String> permissions = permissionService.getMenuPermission(user);
 
+        //鑾峰彇鍗忚皟鍛�
+        BaseOrganization baseOrganization = new BaseOrganization();
+        baseOrganization.setReporterNo(user.getUserName());
+        baseOrganization.setDelFlag(0);
+        List<BaseOrganization> baseOrganizations = baseOrganizationService.queryList(baseOrganization);
+        if (CollectionUtils.isNotEmpty(baseOrganizations) && baseOrganizations.size() > 0) {
+            user.setCoordinatorName(baseOrganizations.get(0).getCoordinatorName());
+            user.setCoordinatorNo(baseOrganizations.get(0).getCoordinatorNo());
+        }
 
         AjaxResult ajax = AjaxResult.success();
         ajax.put("user", user);
diff --git a/ruoyi-admin/src/main/resources/application-srm.yml b/ruoyi-admin/src/main/resources/application-srm.yml
index b10ffe7..4fa43f7 100644
--- a/ruoyi-admin/src/main/resources/application-srm.yml
+++ b/ruoyi-admin/src/main/resources/application-srm.yml
@@ -7,9 +7,9 @@
             # 涓诲簱鏁版嵁婧�
             master:
                 # 鍖婚櫌鐜
-                url: jdbc:mysql://129.88.242.37:3308/opo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://127.0.0.1:3306/opo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: opo
-                password: Smartor.2023
+                password: Smartor.2025
 
             # 浠庡簱鏁版嵁婧�
             slave:
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index 017b8ba..0634e9c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -159,10 +159,36 @@
      */
     private String dingUserId;
 
+    /**
+     * 鍗忚皟鍛樼紪鍙�
+     */
+    private String coordinatorNo;
+
+    /**
+     * 鍗忚皟鍛樺鍚�
+     */
+    private String coordinatorName;
+
     public SysUser() {
 
     }
 
+    public String getCoordinatorNo() {
+        return coordinatorNo;
+    }
+
+    public void setCoordinatorNo(String coordinatorNo) {
+        this.coordinatorNo = coordinatorNo;
+    }
+
+    public String getCoordinatorName() {
+        return coordinatorName;
+    }
+
+    public void setCoordinatorName(String coordinatorName) {
+        this.coordinatorName = coordinatorName;
+    }
+
     public String getDingUserId() {
         return dingUserId;
     }
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
index 499da03..faa9b1d 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
@@ -10,6 +10,7 @@
 import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
+
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.velocity.Template;
@@ -38,12 +39,11 @@
 
 /**
  * 涓氬姟 鏈嶅姟灞傚疄鐜�
- * 
+ *
  * @author ruoyi
  */
 @Service
-public class GenTableServiceImpl implements IGenTableService
-{
+public class GenTableServiceImpl implements IGenTableService {
     private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class);
 
     @Autowired
@@ -54,13 +54,12 @@
 
     /**
      * 鏌ヨ涓氬姟淇℃伅
-     * 
+     *
      * @param id 涓氬姟ID
      * @return 涓氬姟淇℃伅
      */
     @Override
-    public GenTable selectGenTableById(Long id)
-    {
+    public GenTable selectGenTableById(Long id) {
         GenTable genTable = genTableMapper.selectGenTableById(id);
         setTableFromOptions(genTable);
         return genTable;
@@ -68,68 +67,61 @@
 
     /**
      * 鏌ヨ涓氬姟鍒楄〃
-     * 
+     *
      * @param genTable 涓氬姟淇℃伅
      * @return 涓氬姟闆嗗悎
      */
     @Override
-    public List<GenTable> selectGenTableList(GenTable genTable)
-    {
+    public List<GenTable> selectGenTableList(GenTable genTable) {
         return genTableMapper.selectGenTableList(genTable);
     }
 
     /**
      * 鏌ヨ鎹簱鍒楄〃
-     * 
+     *
      * @param genTable 涓氬姟淇℃伅
      * @return 鏁版嵁搴撹〃闆嗗悎
      */
     @Override
-    public List<GenTable> selectDbTableList(GenTable genTable)
-    {
+    public List<GenTable> selectDbTableList(GenTable genTable) {
         return genTableMapper.selectDbTableList(genTable);
     }
 
     /**
      * 鏌ヨ鎹簱鍒楄〃
-     * 
+     *
      * @param tableNames 琛ㄥ悕绉扮粍
      * @return 鏁版嵁搴撹〃闆嗗悎
      */
     @Override
-    public List<GenTable> selectDbTableListByNames(String[] tableNames)
-    {
+    public List<GenTable> selectDbTableListByNames(String[] tableNames) {
         return genTableMapper.selectDbTableListByNames(tableNames);
     }
 
     /**
      * 鏌ヨ鎵�鏈夎〃淇℃伅
-     * 
+     *
      * @return 琛ㄤ俊鎭泦鍚�
      */
     @Override
-    public List<GenTable> selectGenTableAll()
-    {
+    public List<GenTable> selectGenTableAll() {
         return genTableMapper.selectGenTableAll();
     }
 
     /**
      * 淇敼涓氬姟
-     * 
+     *
      * @param genTable 涓氬姟淇℃伅
      * @return 缁撴灉
      */
     @Override
     @Transactional
-    public void updateGenTable(GenTable genTable)
-    {
+    public void updateGenTable(GenTable genTable) {
         String options = JSON.toJSONString(genTable.getParams());
         genTable.setOptions(options);
         int row = genTableMapper.updateGenTable(genTable);
-        if (row > 0)
-        {
-            for (GenTableColumn cenTableColumn : genTable.getColumns())
-            {
+        if (row > 0) {
+            for (GenTableColumn cenTableColumn : genTable.getColumns()) {
                 genTableColumnMapper.updateGenTableColumn(cenTableColumn);
             }
         }
@@ -137,62 +129,53 @@
 
     /**
      * 鍒犻櫎涓氬姟瀵硅薄
-     * 
+     *
      * @param tableIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
      * @return 缁撴灉
      */
     @Override
     @Transactional
-    public void deleteGenTableByIds(Long[] tableIds)
-    {
+    public void deleteGenTableByIds(Long[] tableIds) {
         genTableMapper.deleteGenTableByIds(tableIds);
         genTableColumnMapper.deleteGenTableColumnByIds(tableIds);
     }
 
     /**
      * 瀵煎叆琛ㄧ粨鏋�
-     * 
+     *
      * @param tableList 瀵煎叆琛ㄥ垪琛�
      */
     @Override
     @Transactional
-    public void importGenTable(List<GenTable> tableList)
-    {
+    public void importGenTable(List<GenTable> tableList) {
         String operName = SecurityUtils.getUsername();
-        try
-        {
-            for (GenTable table : tableList)
-            {
+        try {
+            for (GenTable table : tableList) {
                 String tableName = table.getTableName();
                 GenUtils.initTable(table, operName);
                 int row = genTableMapper.insertGenTable(table);
-                if (row > 0)
-                {
+                if (row > 0) {
                     // 淇濆瓨鍒椾俊鎭�
                     List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
-                    for (GenTableColumn column : genTableColumns)
-                    {
+                    for (GenTableColumn column : genTableColumns) {
                         GenUtils.initColumnField(column, table);
                         genTableColumnMapper.insertGenTableColumn(column);
                     }
                 }
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             throw new ServiceException("瀵煎叆澶辫触锛�" + e.getMessage());
         }
     }
 
     /**
      * 棰勮浠g爜
-     * 
+     *
      * @param tableId 琛ㄧ紪鍙�
      * @return 棰勮鏁版嵁鍒楄〃
      */
     @Override
-    public Map<String, String> previewCode(Long tableId)
-    {
+    public Map<String, String> previewCode(Long tableId) {
         Map<String, String> dataMap = new LinkedHashMap<>();
         // 鏌ヨ琛ㄤ俊鎭�
         GenTable table = genTableMapper.selectGenTableById(tableId);
@@ -206,8 +189,7 @@
 
         // 鑾峰彇妯℃澘鍒楄〃
         List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
-        for (String template : templates)
-        {
+        for (String template : templates) {
             // 娓叉煋妯℃澘
             StringWriter sw = new StringWriter();
             Template tpl = Velocity.getTemplate(template, Constants.UTF8);
@@ -219,13 +201,12 @@
 
     /**
      * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
-     * 
+     *
      * @param tableName 琛ㄥ悕绉�
      * @return 鏁版嵁
      */
     @Override
-    public byte[] downloadCode(String tableName)
-    {
+    public byte[] downloadCode(String tableName) {
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         ZipOutputStream zip = new ZipOutputStream(outputStream);
         generatorCode(tableName, zip);
@@ -235,12 +216,11 @@
 
     /**
      * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛�
-     * 
+     *
      * @param tableName 琛ㄥ悕绉�
      */
     @Override
-    public void generatorCode(String tableName)
-    {
+    public void generatorCode(String tableName) {
         // 鏌ヨ琛ㄤ俊鎭�
         GenTable table = genTableMapper.selectGenTableByName(tableName);
         // 璁剧疆涓诲瓙琛ㄤ俊鎭�
@@ -254,21 +234,16 @@
 
         // 鑾峰彇妯℃澘鍒楄〃
         List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
-        for (String template : templates)
-        {
-            if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm"))
-            {
+        for (String template : templates) {
+            if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) {
                 // 娓叉煋妯℃澘
                 StringWriter sw = new StringWriter();
                 Template tpl = Velocity.getTemplate(template, Constants.UTF8);
                 tpl.merge(context, sw);
-                try
-                {
+                try {
                     String path = getGenPath(table, template);
                     FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8);
-                }
-                catch (IOException e)
-                {
+                } catch (IOException e) {
                     throw new ServiceException("娓叉煋妯℃澘澶辫触锛岃〃鍚嶏細" + table.getTableName());
                 }
             }
@@ -277,52 +252,46 @@
 
     /**
      * 鍚屾鏁版嵁搴�
-     * 
+     *
      * @param tableName 琛ㄥ悕绉�
      */
     @Override
     @Transactional
-    public void synchDb(String tableName)
-    {
+    public void synchDb(String tableName) {
         GenTable table = genTableMapper.selectGenTableByName(tableName);
         List<GenTableColumn> tableColumns = table.getColumns();
         List<String> tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
 
         List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
-        if (StringUtils.isEmpty(dbTableColumns))
-        {
+        if (StringUtils.isEmpty(dbTableColumns)) {
             throw new ServiceException("鍚屾鏁版嵁澶辫触锛屽師琛ㄧ粨鏋勪笉瀛樺湪");
         }
         List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
 
         dbTableColumns.forEach(column -> {
-            if (!tableColumnNames.contains(column.getColumnName()))
-            {
+            if (!tableColumnNames.contains(column.getColumnName())) {
                 GenUtils.initColumnField(column, table);
                 genTableColumnMapper.insertGenTableColumn(column);
             }
         });
 
         List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
-        if (StringUtils.isNotEmpty(delColumns))
-        {
+        if (StringUtils.isNotEmpty(delColumns)) {
             genTableColumnMapper.deleteGenTableColumns(delColumns);
         }
     }
 
     /**
      * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
-     * 
+     *
      * @param tableNames 琛ㄦ暟缁�
      * @return 鏁版嵁
      */
     @Override
-    public byte[] downloadCode(String[] tableNames)
-    {
+    public byte[] downloadCode(String[] tableNames) {
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         ZipOutputStream zip = new ZipOutputStream(outputStream);
-        for (String tableName : tableNames)
-        {
+        for (String tableName : tableNames) {
             generatorCode(tableName, zip);
         }
         IOUtils.closeQuietly(zip);
@@ -332,8 +301,7 @@
     /**
      * 鏌ヨ琛ㄤ俊鎭苟鐢熸垚浠g爜
      */
-    private void generatorCode(String tableName, ZipOutputStream zip)
-    {
+    private void generatorCode(String tableName, ZipOutputStream zip) {
         // 鏌ヨ琛ㄤ俊鎭�
         GenTable table = genTableMapper.selectGenTableByName(tableName);
         // 璁剧疆涓诲瓙琛ㄤ俊鎭�
@@ -347,23 +315,19 @@
 
         // 鑾峰彇妯℃澘鍒楄〃
         List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
-        for (String template : templates)
-        {
+        for (String template : templates) {
             // 娓叉煋妯℃澘
             StringWriter sw = new StringWriter();
             Template tpl = Velocity.getTemplate(template, Constants.UTF8);
             tpl.merge(context, sw);
-            try
-            {
+            try {
                 // 娣诲姞鍒皕ip
                 zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table)));
                 IOUtils.write(sw.toString(), zip, Constants.UTF8);
                 IOUtils.closeQuietly(sw);
-				zip.flush();
+                zip.flush();
                 zip.closeEntry();
-            }
-            catch (IOException e)
-            {
+            } catch (IOException e) {
                 log.error("娓叉煋妯℃澘澶辫触锛岃〃鍚嶏細" + table.getTableName(), e);
             }
         }
@@ -371,36 +335,24 @@
 
     /**
      * 淇敼淇濆瓨鍙傛暟鏍¢獙
-     * 
+     *
      * @param genTable 涓氬姟淇℃伅
      */
     @Override
-    public void validateEdit(GenTable genTable)
-    {
-        if (GenConstants.TPL_TREE.equals(genTable.getTplCategory()))
-        {
+    public void validateEdit(GenTable genTable) {
+        if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) {
             String options = JSON.toJSONString(genTable.getParams());
             JSONObject paramsObj = JSONObject.parseObject(options);
-            if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE)))
-            {
+            if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) {
                 throw new ServiceException("鏍戠紪鐮佸瓧娈典笉鑳戒负绌�");
-            }
-            else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE)))
-            {
+            } else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) {
                 throw new ServiceException("鏍戠埗缂栫爜瀛楁涓嶈兘涓虹┖");
-            }
-            else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME)))
-            {
+            } else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) {
                 throw new ServiceException("鏍戝悕绉板瓧娈典笉鑳戒负绌�");
-            }
-            else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory()))
-            {
-                if (StringUtils.isEmpty(genTable.getSubTableName()))
-                {
+            } else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) {
+                if (StringUtils.isEmpty(genTable.getSubTableName())) {
                     throw new ServiceException("鍏宠仈瀛愯〃鐨勮〃鍚嶄笉鑳戒负绌�");
-                }
-                else if (StringUtils.isEmpty(genTable.getSubTableFkName()))
-                {
+                } else if (StringUtils.isEmpty(genTable.getSubTableFkName())) {
                     throw new ServiceException("瀛愯〃鍏宠仈鐨勫閿悕涓嶈兘涓虹┖");
                 }
             }
@@ -409,35 +361,27 @@
 
     /**
      * 璁剧疆涓婚敭鍒椾俊鎭�
-     * 
+     *
      * @param table 涓氬姟琛ㄤ俊鎭�
      */
-    public void setPkColumn(GenTable table)
-    {
-        for (GenTableColumn column : table.getColumns())
-        {
-            if (column.isPk())
-            {
+    public void setPkColumn(GenTable table) {
+        for (GenTableColumn column : table.getColumns()) {
+            if (column.isPk()) {
                 table.setPkColumn(column);
                 break;
             }
         }
-        if (StringUtils.isNull(table.getPkColumn()))
-        {
+        if (StringUtils.isNull(table.getPkColumn())) {
             table.setPkColumn(table.getColumns().get(0));
         }
-        if (GenConstants.TPL_SUB.equals(table.getTplCategory()))
-        {
-            for (GenTableColumn column : table.getSubTable().getColumns())
-            {
-                if (column.isPk())
-                {
+        if (GenConstants.TPL_SUB.equals(table.getTplCategory())) {
+            for (GenTableColumn column : table.getSubTable().getColumns()) {
+                if (column.isPk()) {
                     table.getSubTable().setPkColumn(column);
                     break;
                 }
             }
-            if (StringUtils.isNull(table.getSubTable().getPkColumn()))
-            {
+            if (StringUtils.isNull(table.getSubTable().getPkColumn())) {
                 table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0));
             }
         }
@@ -445,34 +389,30 @@
 
     /**
      * 璁剧疆涓诲瓙琛ㄤ俊鎭�
-     * 
+     *
      * @param table 涓氬姟琛ㄤ俊鎭�
      */
-    public void setSubTable(GenTable table)
-    {
+    public void setSubTable(GenTable table) {
         String subTableName = table.getSubTableName();
-        if (StringUtils.isNotEmpty(subTableName))
-        {
+        if (StringUtils.isNotEmpty(subTableName)) {
             table.setSubTable(genTableMapper.selectGenTableByName(subTableName));
         }
     }
 
     /**
      * 璁剧疆浠g爜鐢熸垚鍏朵粬閫夐」鍊�
-     * 
+     *
      * @param genTable 璁剧疆鍚庣殑鐢熸垚瀵硅薄
      */
-    public void setTableFromOptions(GenTable genTable)
-    {
+    public void setTableFromOptions(GenTable genTable) {
         JSONObject paramsObj = JSONObject.parseObject(genTable.getOptions());
-        if (StringUtils.isNotNull(paramsObj))
-        {
+        if (StringUtils.isNotNull(paramsObj)) {
             String treeCode = paramsObj.getString(GenConstants.TREE_CODE);
             String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE);
             String treeName = paramsObj.getString(GenConstants.TREE_NAME);
             String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID);
             String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME);
-            
+
             genTable.setTreeCode(treeCode);
             genTable.setTreeParentCode(treeParentCode);
             genTable.setTreeName(treeName);
@@ -483,18 +423,16 @@
 
     /**
      * 鑾峰彇浠g爜鐢熸垚鍦板潃
-     * 
-     * @param table 涓氬姟琛ㄤ俊鎭�
+     *
+     * @param table    涓氬姟琛ㄤ俊鎭�
      * @param template 妯℃澘鏂囦欢璺緞
      * @return 鐢熸垚鍦板潃
      */
-    public static String getGenPath(GenTable table, String template)
-    {
+    public static String getGenPath(GenTable table, String template) {
         String genPath = table.getGenPath();
-        if (StringUtils.equals(genPath, "/"))
-        {
+        if (StringUtils.equals(genPath, "/")) {
             return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table);
         }
         return genPath + File.separator + VelocityUtils.getFileName(template, table);
     }
-}
\ No newline at end of file
+}
diff --git a/ruoyi-generator/src/main/resources/generator.yml b/ruoyi-generator/src/main/resources/generator.yml
index 5bd3dd6..e3ac616 100644
--- a/ruoyi-generator/src/main/resources/generator.yml
+++ b/ruoyi-generator/src/main/resources/generator.yml
@@ -1,10 +1,10 @@
 # 浠g爜鐢熸垚
-gen: 
+gen:
   # 浣滆��
-  author: ruoyi
+  author: ls
   # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
-  packageName: com.ruoyi.system
+  packageName: com.ruoyi.project
   # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸false
   autoRemovePre: false
   # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
-  tablePrefix: sys_
\ No newline at end of file
+  tablePrefix: sys_
diff --git a/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm b/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm
index 321430b..03da149 100644
--- a/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm
+++ b/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm
@@ -3,15 +3,15 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="${packageName}.mapper.${ClassName}Mapper">
-    
-    <resultMap type="${ClassName}" id="${ClassName}Result">
+
+    <resultMap type="${packageName}.domain.${ClassName}" id="${ClassName}Result">
 #foreach ($column in $columns)
         <result property="${column.javaField}"    column="${column.columnName}"    />
 #end
     </resultMap>
 #if($table.sub)
 
-    <resultMap id="${ClassName}${subClassName}Result" type="${ClassName}" extends="${ClassName}Result">
+    <resultMap id="${ClassName}${subClassName}Result" type="${packageName}.domain.${ClassName}" extends="${ClassName}Result">
         <collection property="${subclassName}List" notNullColumn="sub_${subTable.pkColumn.columnName}" javaType="java.util.List" resultMap="${subClassName}Result" />
     </resultMap>
 
@@ -26,7 +26,7 @@
         select#foreach($column in $columns) $column.columnName#if($velocityCount != $columns.size()),#end#end from ${tableName}
     </sql>
 
-    <select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result">
+    <select id="select${ClassName}List" parameterType="${packageName}.domain.${ClassName}" resultMap="${ClassName}Result">
         <include refid="select${ClassName}Vo"/>
         <where>
 #foreach($column in $columns)
@@ -58,4 +58,4 @@
         </where>
     </select>
 
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/BaseOrganization.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/BaseOrganization.java
index e4eb356..7e6c76c 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/BaseOrganization.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/BaseOrganization.java
@@ -13,161 +13,244 @@
 
 /**
  * 鏈烘瀯绠$悊瀵硅薄 base_organization
- * 
+ *
  * @author ruoyi
  * @date 2021-11-05
  */
 @Data
 @ApiModel("鏈烘瀯")
-public class BaseOrganization extends BaseEntity
-{
+public class BaseOrganization extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** 涓婚敭鑷 */
+    /**
+     * 涓婚敭鑷
+     */
     @ApiModelProperty("涓婚敭鑷")
     //鏁版嵁搴撹嚜澧炴敼鎴怈TableId(type = IdType.AUTO)
     @TableId(type = IdType.AUTO)
     private Long id;
 
-    /** 缁勭粐鍚嶇О */
+    /**
+     * 缁勭粐鍚嶇О
+     */
     @ApiModelProperty("缁勭粐鍚嶇О")
     @Excel(name = "缁勭粐鍚嶇О")
     private String organizationname;
 
-    /** 缁勭粐缂栧彿 */
+    /**
+     * 缁勭粐缂栧彿
+     */
     @ApiModelProperty("缁勭粐缂栧彿")
     @Excel(name = "缁勭粐缂栧彿")
     private String organizationid;
 
-    /** logo鍥剧墖璺緞 */
+    /**
+     * logo鍥剧墖璺緞
+     */
     @ApiModelProperty("logo鍥剧墖璺緞")
     @Excel(name = "logo鍥剧墖璺緞")
     private String logourl;
 
-    /** 娉ㄥ唽鏃堕棿 */
+    /**
+     * 娉ㄥ唽鏃堕棿
+     */
     @ApiModelProperty("娉ㄥ唽鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @Excel(name = "娉ㄥ唽鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date registertime;
 
-    /** 娉ㄥ唽鍦扮偣璇︾粏鍦板潃 */
+    /**
+     * 娉ㄥ唽鍦扮偣璇︾粏鍦板潃
+     */
     @ApiModelProperty("娉ㄥ唽鍦扮偣璇︾粏鍦板潃")
     @Excel(name = "娉ㄥ唽鍦扮偣璇︾粏鍦板潃")
     private String registeraddress;
 
-    /** 鍔炲叕鍦扮偣 */
+    /**
+     * 鍔炲叕鍦扮偣
+     */
     @ApiModelProperty("鍔炲叕鍦扮偣")
     @Excel(name = "鍔炲叕鍦扮偣")
     private String officeplace;
 
-    /** 娉曚汉 */
+    /**
+     * 娉曚汉
+     */
     @ApiModelProperty("娉曚汉")
     @Excel(name = "娉曚汉")
     private String legalperson;
 
-    /** 鑱旂郴浜� */
+    /**
+     * 鑱旂郴浜�
+     */
     @ApiModelProperty("鑱旂郴浜�")
     @Excel(name = "鑱旂郴浜�")
     private String contactperson;
 
-    /** 鑱旂郴鐢佃瘽 */
+    /**
+     * 鑱旂郴鐢佃瘽
+     */
     @ApiModelProperty("鑱旂郴鐢佃瘽")
     @Excel(name = "鑱旂郴鐢佃瘽")
     private String contactnumber;
 
-    /** 浠嬬粛 */
+    /**
+     * 浠嬬粛
+     */
     @ApiModelProperty("浠嬬粛")
     @Excel(name = "浠嬬粛")
     private String introduction;
 
-    /** 鏈烘瀯绫诲瀷 鏍规嵁瀛楀吀OrganizationType椤�
-1锛歄PO鏈烘瀯
-2锛氱孩鍗佸瓧浼�
-3锛氬尰鐤楁満鏋�
-4锛氳繍杈撳崟浣� */
-	@ApiModelProperty("鏈烘瀯绫诲瀷 鏍规嵁瀛楀吀 sys_OrganizationType")
+    /**
+     * 鏈烘瀯绫诲瀷 鏍规嵁瀛楀吀OrganizationType椤�
+     * 1锛歄PO鏈烘瀯
+     * 2锛氱孩鍗佸瓧浼�
+     * 3锛氬尰鐤楁満鏋�
+     * 4锛氳繍杈撳崟浣�
+     */
+    @ApiModelProperty("鏈烘瀯绫诲瀷 鏍规嵁瀛楀吀 sys_OrganizationType")
     @Excel(name = "鏈烘瀯绫诲瀷 鏍规嵁瀛楀吀OrganizationType椤� 1锛歄PO鏈烘瀯 2锛氱孩鍗佸瓧浼� 3锛氬尰鐤楁満鏋� 4锛氳繍杈撳崟浣�")
     private String organizationtype;
 
-    /** 鍖婚櫌鎬ц川 鏍规嵁瀛楀吀HospitalNature椤� 
-A1:缁煎悎鎬у尰闄� 绛�
-
-OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕侀�夋嫨 */
+    /**
+     * 鍖婚櫌鎬ц川 鏍规嵁瀛楀吀HospitalNature椤�
+     * A1:缁煎悎鎬у尰闄� 绛�
+     * <p>
+     * OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕侀�夋嫨
+     */
     @ApiModelProperty("鍖婚櫌鎬ц川 鏍规嵁瀛楀吀sys_HospitalNature OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕侀�夋嫨")
     @Excel(name = "鍖婚櫌鎬ц川 鏍规嵁瀛楀吀HospitalNature椤� A1:缁煎悎鎬у尰闄� 绛� OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕侀�夋嫨")
     private String hospitalnature;
 
-    /** 鍦板尯鎬ц川 鏍规嵁瀛楀吀RegionalLevel椤�  
-0锛氱渷鏈骇 绛�
-
-OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕侀�夋嫨 */
-	@ApiModelProperty("鍦板尯鎬ц川 鏍规嵁瀛楀吀sys_RegionalLevel  OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕侀�夋嫨")
+    /**
+     * 鍦板尯鎬ц川 鏍规嵁瀛楀吀RegionalLevel椤�
+     * 0锛氱渷鏈骇 绛�
+     * <p>
+     * OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕侀�夋嫨
+     */
+    @ApiModelProperty("鍦板尯鎬ц川 鏍规嵁瀛楀吀sys_RegionalLevel  OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕侀�夋嫨")
     @Excel(name = "鍦板尯鎬ц川 鏍规嵁瀛楀吀RegionalLevel椤� 0锛氱渷鏈骇 绛� OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕侀�夋嫨")
     private String regionallevel;
 
-    /** 鍖荤枟鏈烘瀯缂栧彿 濡�0锛氭禉姹熺渷浜烘皯鍖婚櫌 1锛氭澀宸炲競绗竴浜烘皯鍖婚櫌
-OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕佸~鍐� */
+    /**
+     * 鍖荤枟鏈烘瀯缂栧彿 濡�0锛氭禉姹熺渷浜烘皯鍖婚櫌 1锛氭澀宸炲競绗竴浜烘皯鍖婚櫌
+     * OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕佸~鍐�
+     */
     @ApiModelProperty("鍖荤枟鏈烘瀯缂栧彿 濡�0锛氭禉姹熺渷浜烘皯鍖婚櫌 1锛氭澀宸炲競绗竴浜烘皯鍖婚櫌OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕佸~鍐�")
     @Excel(name = "鍖荤枟鏈烘瀯缂栧彿 濡�0锛氭禉姹熺渷浜烘皯鍖婚櫌 1锛氭澀宸炲競绗竴浜烘皯鍖婚櫌 OrganizationType=2鍖荤枟鏈烘瀯鏃堕渶瑕佸~鍐�")
     private String medicalcode;
 
-    /** 鐪佷唤缂栧彿 鏍规嵁琛屾斂鍖哄垝琛�  鎸夋敞鍐屽湴閫夋嫨 */
+    /**
+     * 鐪佷唤缂栧彿 鏍规嵁琛屾斂鍖哄垝琛�  鎸夋敞鍐屽湴閫夋嫨
+     */
     @ApiModelProperty("鐪佷唤缂栧彿 鏍规嵁琛屾斂鍖哄垝琛�  鎸夋敞鍐屽湴閫夋嫨")
     @Excel(name = "鐪佷唤缂栧彿 鏍规嵁琛屾斂鍖哄垝琛�  鎸夋敞鍐屽湴閫夋嫨")
     private String province;
 
-    /** 鐪佷唤鍚嶇О */
+    /**
+     * 鐪佷唤鍚嶇О
+     */
     @ApiModelProperty("鐪佷唤鍚嶇О")
     @Excel(name = "鐪佷唤鍚嶇О")
     private String provincename;
 
-    /** 甯傜紪鍙�  鏍规嵁琛屾斂鍖哄垝琛� */
+    /**
+     * 甯傜紪鍙�  鏍规嵁琛屾斂鍖哄垝琛�
+     */
     @ApiModelProperty("甯傜紪鍙�  鏍规嵁琛屾斂鍖哄垝琛�")
     @Excel(name = "甯傜紪鍙�  鏍规嵁琛屾斂鍖哄垝琛�")
     private String city;
 
-    /** 甯傚悕绉� */
+    /**
+     * 甯傚悕绉�
+     */
     @ApiModelProperty("甯傚悕绉�")
     @Excel(name = "甯傚悕绉�")
     private String cityname;
 
-    /** 鎵�灞炶閬擄紙闀囷級鏍规嵁琛屾斂鍖哄垝琛� */
+    /**
+     * 鎵�灞炶閬擄紙闀囷級鏍规嵁琛屾斂鍖哄垝琛�
+     */
     @ApiModelProperty("鎵�灞炶閬擄紙闀囷級鏍规嵁琛屾斂鍖哄垝琛�")
     @Excel(name = "鎵�灞炶閬�", readConverterExp = "闀�=")
     private String town;
 
-    /** 鎵�灞炶閬擄紙闀囷級鍚嶇О */
+    /**
+     * 鎵�灞炶閬擄紙闀囷級鍚嶇О
+     */
     @ApiModelProperty("鎵�灞炶閬擄紙闀囷級鍚嶇О")
     @Excel(name = "鎵�灞炶閬�", readConverterExp = "闀�=")
     private String townname;
 
-    /** 绀惧尯锛堟潙锛夌紪鍙� 鏍规嵁琛屾斂鍖哄垝琛� */
+    /**
+     * 绀惧尯锛堟潙锛夌紪鍙� 鏍规嵁琛屾斂鍖哄垝琛�
+     */
     @ApiModelProperty("绀惧尯锛堟潙锛夌紪鍙� 鏍规嵁琛屾斂鍖哄垝琛�")
     @Excel(name = "绀惧尯", readConverterExp = "鏉�=")
     private String community;
 
-    /** 绀惧尯锛堟潙锛夊悕绉� */
+    /**
+     * 绀惧尯锛堟潙锛夊悕绉�
+     */
     @ApiModelProperty("绀惧尯锛堟潙锛夊悕绉�")
     @Excel(name = "绀惧尯", readConverterExp = "鏉�=")
     private String communityname;
 
-    /** 鎵�灞炲尯鍩熺紪鍙�  鏍规嵁琛屾斂鍖哄垝琛� */
+    /**
+     * 鎵�灞炲尯鍩熺紪鍙�  鏍规嵁琛屾斂鍖哄垝琛�
+     */
     @ApiModelProperty("鎵�灞炲尯鍩熺紪鍙�  鏍规嵁琛屾斂鍖哄垝琛�")
     @Excel(name = "鎵�灞炲尯鍩熺紪鍙�  鏍规嵁琛屾斂鍖哄垝琛�")
     private String countycode;
 
-    /** 鎵�灞炲尯鍩熷悕绉� */
+    /**
+     * 鎵�灞炲尯鍩熷悕绉�
+     */
     @ApiModelProperty("鎵�灞炲尯鍩熷悕绉�")
     @Excel(name = "鎵�灞炲尯鍩熷悕绉�")
     private String countyname;
-    /** 鎵�灞炲尯鍩熷悕绉� */
+
+    /**
+     * 鎵�灞炲尯鍩熷悕绉�
+     */
     @ApiModelProperty("閾惰鍚嶇О")
     @Excel(name = "閾惰鍚嶇О")
     private String bankname;
-    /** 鎵�灞炲尯鍩熷悕绉� */
+
+    /**
+     * 鎵�灞炲尯鍩熷悕绉�
+     */
     @ApiModelProperty("閾惰璐﹀彿")
     @Excel(name = "閾惰璐﹀彿")
     private String bankaccount;
 
+    /**
+     * 涓婃姤浜哄憳缂栧彿
+     */
+    @ApiModelProperty("涓婃姤浜哄憳缂栧彿")
+    @Excel(name = "涓婃姤浜哄憳缂栧彿")
+    private String reporterNo;
+
+    /**
+     * 涓婃姤浜哄憳濮撳悕
+     */
+    @ApiModelProperty("涓婃姤浜哄憳濮撳悕")
+    @Excel(name = "涓婃姤浜哄憳濮撳悕")
+    private String reporterName;
+
+    /**
+     * 鍗忚皟鍛樼紪鍙�
+     */
+    @ApiModelProperty("鍗忚皟鍛樼紪鍙�")
+    @Excel(name = "鍗忚皟鍛樼紪鍙�")
+    private String coordinatorNo;
+
+    /**
+     * 鍗忚皟鍛樺鍚�
+     */
+    @ApiModelProperty("鍗忚皟鍛樺鍚�")
+    @Excel(name = "鍗忚皟鍛樺鍚�")
+    private String coordinatorName;
+
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceAttendancerecords.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceAttendancerecords.java
new file mode 100644
index 0000000..f6039e1
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceAttendancerecords.java
@@ -0,0 +1,156 @@
+package com.ruoyi.project.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鑰冨嫟璁板綍瀵硅薄 service_attendancerecords
+ *
+ * @author ls
+ * @date 2025-12-28
+ */
+@Data
+@ApiModel("鑰冨嫟璁板綍")
+public class ServiceAttendancerecords extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑰冨嫟璁板綍ID
+     */
+    @ApiModelProperty("鑰冨嫟璁板綍ID")
+    //鏁版嵁搴撹嚜澧炴敼鎴怈TableId(type = IdType.AUTO)
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 浜哄憳缂栧彿
+     */
+    @ApiModelProperty("浜哄憳缂栧彿")
+    @Excel(name = "浜哄憳缂栧彿")
+    private String userNo;
+
+    /**
+     * 浜哄憳濮撳悕
+     */
+    @ApiModelProperty("浜哄憳濮撳悕")
+    @Excel(name = "浜哄憳濮撳悕")
+    private String userName;
+
+    /**
+     * 浜哄憳閮ㄩ棬缂栧彿
+     */
+    @ApiModelProperty("浜哄憳閮ㄩ棬缂栧彿")
+    @Excel(name = "浜哄憳閮ㄩ棬缂栧彿")
+    private String deptNo;
+
+    /**
+     * 浜哄憳閮ㄩ棬鍚嶇О
+     */
+    @ApiModelProperty("浜哄憳閮ㄩ棬鍚嶇О")
+    @Excel(name = "浜哄憳閮ㄩ棬鍚嶇О")
+    private String deptName;
+
+    /**
+     * 鑰冨嫟鏃ユ湡
+     */
+    @ApiModelProperty("鑰冨嫟鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "鑰冨嫟鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date attendanceDate;
+
+    /**
+     * 涓婄彮鎵撳崱鏃堕棿
+     */
+    @ApiModelProperty("涓婄彮鎵撳崱鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "涓婄彮鎵撳崱鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date clockInTime;
+
+    /**
+     * 涓嬬彮鎵撳崱鏃堕棿
+     */
+    @ApiModelProperty("涓嬬彮鎵撳崱鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "涓嬬彮鎵撳崱鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date clockOutTime;
+
+    /**
+     * 鑰冨嫟鐘舵��
+     */
+    @ApiModelProperty("鑰冨嫟鐘舵��")
+    @Excel(name = "鑰冨嫟鐘舵��")
+    private String attendanceStatus;
+
+    /**
+     * 瀹為檯宸ヤ綔鏃堕暱锛堝垎閽燂級
+     */
+    @ApiModelProperty("瀹為檯宸ヤ綔鏃堕暱锛堝垎閽燂級")
+    @Excel(name = "瀹為檯宸ヤ綔鏃堕暱", readConverterExp = "鍒�=閽�")
+    private Long workHoursMinutes;
+
+    /**
+     * 鍔犵彮鏃堕暱锛堝垎閽燂級
+     */
+    @ApiModelProperty("鍔犵彮鏃堕暱锛堝垎閽燂級")
+    @Excel(name = "鍔犵彮鏃堕暱", readConverterExp = "鍒�=閽�")
+    private Long overtimeMinutes;
+
+    /**
+     * 鍔犵彮/澶栧嚭鍘熷洜
+     */
+    @ApiModelProperty("鍔犵彮/澶栧嚭鍘熷洜")
+    @Excel(name = "鍔犵彮/澶栧嚭鍘熷洜")
+    private String reason;
+
+    /**
+     * 鑰冨嫟寮傚父鍘熷洜
+     */
+    @ApiModelProperty("鑰冨嫟寮傚父鍘熷洜")
+    @Excel(name = "鑰冨嫟寮傚父鍘熷洜")
+    private String abnormalReason;
+
+    /**
+     * 涓婄彮鎵撳崱鏂瑰紡
+     */
+    @ApiModelProperty("涓婄彮鎵撳崱鏂瑰紡")
+    @Excel(name = "涓婄彮鎵撳崱鏂瑰紡")
+    private String clockInMethod;
+
+    /**
+     * 涓嬬彮鎵撳崱鏂瑰紡
+     */
+    @ApiModelProperty("涓嬬彮鎵撳崱鏂瑰紡")
+    @Excel(name = "涓嬬彮鎵撳崱鏂瑰紡")
+    private String clockOutMethod;
+
+    /**
+     * 涓婄彮鎵撳崱鍦扮偣
+     */
+    @ApiModelProperty("涓婄彮鎵撳崱鍦扮偣")
+    @Excel(name = "涓婄彮鎵撳崱鍦扮偣")
+    private String clockInLocation;
+
+    /**
+     * 涓嬬彮鎵撳崱鍦扮偣
+     */
+    @ApiModelProperty("涓嬬彮鎵撳崱鍦扮偣")
+    @Excel(name = "涓嬬彮鎵撳崱鍦扮偣")
+    private String clockOutLocation;
+
+    /**
+     * 鏁版嵁鏉ユ簮
+     */
+    @ApiModelProperty("鏁版嵁鏉ユ簮")
+    @Excel(name = "鏁版嵁鏉ユ簮")
+    private String dataSource;
+
+}
+
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfo.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfo.java
index 38bb14c..dd13680 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfo.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfo.java
@@ -74,14 +74,14 @@
     /**
      * 骞撮緞
      */
-    @TableField(exist = false)
+//    @TableField(exist = false)
     @ApiModelProperty("骞撮緞")
     private Long age;
 
     /**
      * 骞撮緞鍗曚綅
      */
-    @TableField(exist = false)
+//    @TableField(exist = false)
     @ApiModelProperty("骞撮緞鍗曚綅")
     private String ageunit;
     /**
@@ -501,7 +501,13 @@
      * 淇℃伅鍛樺鍚�
      */
     @ApiModelProperty("淇℃伅鍛樺鍚�")
-    private String infoname;
+    private String infoName;
+
+    /**
+     * 淇℃伅鍛樺鍚�
+     */
+    @ApiModelProperty("淇℃伅鍛樼紪鍙�")
+    private String infoNo;
 
     /**
      * 淇℃伅鍛樿仈绯绘柟寮�
@@ -585,5 +591,26 @@
     @ApiModelProperty("棣栨鍖荤枟鏈烘瀯绉戝")
     private String firstDept;
 
+    /**
+     * GSC璇勫垎
+     */
+    @ApiModelProperty("GSC璇勫垎")
+    @Excel(name = "GSC璇勫垎", readConverterExp = "GSC璇勫垎")
+    private String gcsScore;
+
+    /**
+     * 鍗忚皟鍛樼紪鍙�
+     */
+    @ApiModelProperty("鍗忚皟鍛樼紪鍙�")
+    @Excel(name = "鍗忚皟鍛樼紪鍙�", readConverterExp = "鍗忚皟鍛樼紪鍙�")
+    private String coordinatorNo;
+
+    /**
+     * 鍗忚皟鍛樺鍚�
+     */
+    @ApiModelProperty("鍗忚皟鍛樺鍚�")
+    @Excel(name = "鍗忚皟鍛樺鍚�", readConverterExp = "鍗忚皟鍛樺鍚�")
+    private String coordinatorName;
+
 
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java
index 3224b47..8003453 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java
@@ -86,8 +86,8 @@
      * 鍑虹敓鏃ユ湡
      */
     @ApiModelProperty("鍑虹敓鏃ユ湡")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "鍑虹敓鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鍑虹敓鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
     private Date birthday;
 
     /**
@@ -291,14 +291,14 @@
      */
     @ApiModelProperty("鎶ュ憡鑰呯紪鍙�")
     @Excel(name = "鎶ュ憡鑰呯紪鍙�")
-    private String reporterno;
+    private String infoNo;
 
     /**
      * 鎶ュ憡鑰呭鍚�
      */
     @ApiModelProperty("鎶ュ憡鑰呭鍚�")
     @Excel(name = "鎶ュ憡鑰呭鍚�")
-    private String reportername;
+    private String infoName;
 
     /**
      * 鎶ュ憡鑰呰仈绯荤數璇�
@@ -323,20 +323,6 @@
     private Integer terminationCase;
 
     /**
-     * 鑱旂郴浜猴紙鍗忚皟鍛樼紪鍙凤級
-     */
-    @ApiModelProperty("鑱旂郴浜猴紙鍗忚皟鍛橈級")
-    @Excel(name = "鑱旂郴浜猴紙鍗忚皟鍛樼紪鍙凤級", readConverterExp = "鍗�=璋冨憳")
-    private String userNo;
-
-    /**
-     * 鑱旂郴浜猴紙鍗忚皟鍛樺鍚嶏級
-     */
-    @ApiModelProperty("鑱旂郴浜猴紙鍗忚皟鍛橈級")
-    @Excel(name = "鑱旂郴浜猴紙鍗忚皟鍛樺鍚嶏級", readConverterExp = "鍗�=璋冨憳")
-    private String userName;
-
-    /**
      * 鑱旂郴浜猴紙鍗忚皟鍛樺鍚嶏級
      */
     @ApiModelProperty("閮ㄩ棬缂栧彿")
@@ -355,7 +341,21 @@
      */
     @ApiModelProperty("GSC璇勫垎")
     @Excel(name = "GSC璇勫垎", readConverterExp = "GSC璇勫垎")
-    private String gscScore;
+    private String gcsScore;
+
+    /**
+     * 琛�鍨� 鏍规嵁瀛楀吀sys_BloodType
+     */
+    @ApiModelProperty("琛�鍨� 鏍规嵁瀛楀吀sys_BloodType")
+    @Excel(name = "琛�鍨� 鏍规嵁瀛楀吀sys_BloodType", readConverterExp = "琛�鍨� 鏍规嵁瀛楀吀sys_BloodType")
+    private String bloodType;
+
+    /**
+     * 琛�鍨� 鏍规嵁瀛楀吀sys_BloodType
+     */
+    @ApiModelProperty("Rh闃存�� 0锛氬惁锛�1锛氭槸")
+    @Excel(name = "Rh闃存�� 0锛氬惁锛�1锛氭槸", readConverterExp = "Rh闃存�� 0锛氬惁锛�1锛氭槸")
+    private String rhYin;
 
     /**
      * 鏄惁闇�瑕佽浆杩� 1锛氫笉闇�瑕�   2闇�瑕�     榛樿1
@@ -389,5 +389,19 @@
     @ApiModelProperty("杞繍淇℃伅")
     private List<ServiceTransport> serviceTransport;
 
+    /**
+     * 鍗忚皟鍛樼紪鍙�
+     */
+    @ApiModelProperty("鍗忚皟鍛樼紪鍙�")
+    @Excel(name = "鍗忚皟鍛樼紪鍙�", readConverterExp = "鍗忚皟鍛樼紪鍙�")
+    private String coordinatorNo;
+
+    /**
+     * 鍗忚皟鍛樺鍚�
+     */
+    @ApiModelProperty("鍗忚皟鍛樺鍚�")
+    @Excel(name = "鍗忚皟鍛樺鍚�", readConverterExp = "鍗忚皟鍛樺鍚�")
+    private String coordinatorName;
+
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatemaintenance.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatemaintenance.java
new file mode 100644
index 0000000..3e2c725
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatemaintenance.java
@@ -0,0 +1,84 @@
+package com.ruoyi.project.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 渚涗綋缁存姢璁板綍瀵硅薄 service_donatemaintenance
+ *
+ * @author ruoyi
+ * @date 2025-12-27
+ */
+@Data
+@ApiModel("渚涗綋缁存姢璁板綍")
+public class ServiceDonatemaintenance extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @ApiModelProperty("$column.columnComment")
+    //鏁版嵁搴撹嚜澧炴敼鎴怈TableId(type = IdType.AUTO)
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鍏宠仈service_donatebaseinfo琛ㄧ殑ID
+     */
+    @ApiModelProperty("鍏宠仈service_donatebaseinfo琛ㄧ殑ID")
+    @Excel(name = "鍏宠仈service_donatebaseinfo琛ㄧ殑ID")
+    private Long infoid;
+
+    /**
+     * 妗堜緥缂栧彿
+     */
+    @ApiModelProperty("妗堜緥缂栧彿")
+    @Excel(name = "妗堜緥缂栧彿")
+    private String caseNo;
+
+    /**
+     * 鎹愮尞鑰呯紪鍙�
+     */
+    @ApiModelProperty("鎹愮尞鑰呯紪鍙�")
+    @Excel(name = "鎹愮尞鑰呯紪鍙�")
+    private String donorno;
+
+    /**
+     * 缁存姢椤圭洰缂栧彿
+     */
+    @ApiModelProperty("缁存姢椤圭洰缂栧彿")
+    @Excel(name = "缁存姢椤圭洰缂栧彿")
+    private String itemNo;
+
+    /**
+     * 缁存姢椤圭洰鍚嶇О
+     */
+    @ApiModelProperty("缁存姢椤圭洰鍚嶇О")
+    @Excel(name = "缁存姢椤圭洰鍚嶇О")
+    private String itemName;
+
+    /**
+     * 缁存寔椤圭洰鏃堕棿
+     */
+    @ApiModelProperty("缁存寔椤圭洰鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "缁存寔椤圭洰鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date itemTime;
+
+    /**
+     * 椤圭洰缁存姢璇︽儏锛宩son缁撴瀯
+     */
+    @ApiModelProperty("椤圭洰缁存姢璇︽儏锛宩son缁撴瀯")
+    @Excel(name = "椤圭洰缁存姢璇︽儏锛宩son缁撴瀯")
+    private String itemDesc;
+
+}
+
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceEthicalreviewinitiate.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceEthicalreviewinitiate.java
index 8fe3c7f..3d6208b 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceEthicalreviewinitiate.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceEthicalreviewinitiate.java
@@ -66,5 +66,63 @@
     @Excel(name = "鏈夋晥鎴嚦鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date cutOffTime;
 
+
+    /**
+     * 涓撳鎺掗槦搴忓彿
+     */
+    @ApiModelProperty("涓撳鎺掗槦搴忓彿")
+    @Excel(name = "涓撳鎺掗槦搴忓彿")
+    private Long orderNo;
+
+    /**
+     * 涓撳缁撹  瑙佸瓧鍏� sys_0_1
+     */
+    @ApiModelProperty("涓撳缁撹  瑙佸瓧鍏� sys_0_1 ")
+    @Excel(name = "涓撳缁撹  瑙佸瓧鍏� sys_0_1 ")
+    private String expertConclusion;
+
+    /**
+     * 涓撳鎰忚
+     */
+    @ApiModelProperty("涓撳鎰忚")
+    @Excel(name = "涓撳鎰忚")
+    private String expertOpinion;
+
+    /**
+     * 涓撳缂栧彿
+     */
+    @ApiModelProperty("涓撳缂栧彿")
+    @Excel(name = "涓撳缂栧彿")
+    private String expertNo;
+
+    /**
+     * 涓撳濮撳悕
+     */
+    @ApiModelProperty("涓撳濮撳悕")
+    @Excel(name = "涓撳濮撳悕")
+    private String expertName;
+
+    /**
+     * 涓撳绫诲瀷
+     */
+    @ApiModelProperty("涓撳绫诲瀷")
+    @Excel(name = "涓撳绫诲瀷")
+    private String expertType;
+
+    /**
+     * 涓撳缁撹鏃堕棿
+     */
+    @ApiModelProperty("涓撳缁撹鏃堕棿")
+    @Excel(name = "涓撳缁撹鏃堕棿")
+    private Date expertTime;
+
+    /**
+     * 0锛氭柊寤�;1锛氬鏌ヤ腑;2锛氱粨鏉�
+     */
+    @ApiModelProperty("0锛氭柊寤�;1锛氬鏌ヤ腑;2锛氱粨鏉�")
+    @Excel(name = "0锛氭柊寤�;1锛氬鏌ヤ腑;2锛氱粨鏉�")
+    private String status;
+
+
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceMeeting.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceMeeting.java
new file mode 100644
index 0000000..6f15219
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceMeeting.java
@@ -0,0 +1,168 @@
+package com.ruoyi.project.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 浼氳绾瀵硅薄 service_meeting
+ * 
+ * @author ls
+ * @date 2025-12-28
+ */
+@Data
+@ApiModel("浼氳绾")
+public class ServiceMeeting extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 浼氳ID */
+    @ApiModelProperty("浼氳ID")
+    //鏁版嵁搴撹嚜澧炴敼鎴怈TableId(type = IdType.AUTO)
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /** 浼氳缂栧彿 */
+    @ApiModelProperty("浼氳缂栧彿")
+    @Excel(name = "浼氳缂栧彿")
+    private String meetingNumber;
+
+    /** 浼氳鏍囬 */
+    @ApiModelProperty("浼氳鏍囬")
+    @Excel(name = "浼氳鏍囬")
+    private String title;
+
+    /** 浼氳绫诲瀷ID */
+    @ApiModelProperty("浼氳绫诲瀷ID")
+    @Excel(name = "浼氳绫诲瀷ID")
+    private Integer typeId;
+
+    /** 浼氳鍦扮偣ID */
+    @ApiModelProperty("浼氳鍦扮偣ID")
+    @Excel(name = "浼氳鍦扮偣ID")
+    private Integer locationId;
+
+    /** 缁勭粐鑰匢D */
+    @ApiModelProperty("缁勭粐鑰匢D")
+    @Excel(name = "缁勭粐鑰匢D")
+    private Integer organizerId;
+
+    /** 浼氳寮�濮嬫椂闂� */
+    @ApiModelProperty("浼氳寮�濮嬫椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "浼氳寮�濮嬫椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    /** 浼氳缁撴潫鏃堕棿 */
+    @ApiModelProperty("浼氳缁撴潫鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "浼氳缁撴潫鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    /** 浼氳姒傝 */
+    @ApiModelProperty("浼氳姒傝")
+    @Excel(name = "浼氳姒傝")
+    private String summary;
+
+    /** 浼氳鍏蜂綋鍐呭(瀵屾枃鏈�) */
+    @ApiModelProperty("浼氳鍏蜂綋鍐呭(瀵屾枃鏈�)")
+    @Excel(name = "浼氳鍏蜂綋鍐呭(瀵屾枃鏈�)")
+    private String content;
+
+    /** 闄勪欢淇℃伅(JSON鏍煎紡) */
+    @ApiModelProperty("闄勪欢淇℃伅(JSON鏍煎紡)")
+    @Excel(name = "闄勪欢淇℃伅(JSON鏍煎紡)")
+    private String attachment;
+
+    /** 鐘舵��(1:寰呭紑濮�,2:杩涜涓�,3:宸茬粨鏉�,4:宸插彇娑�) */
+    @ApiModelProperty("鐘舵��(1:寰呭紑濮�,2:杩涜涓�,3:宸茬粨鏉�,4:宸插彇娑�)")
+    @Excel(name = "鐘舵��(1:寰呭紑濮�,2:杩涜涓�,3:宸茬粨鏉�,4:宸插彇娑�)")
+    private Integer status;
+
+    /** 鏄惁涓虹郴鍒椾細璁�(1:鏄�,0:鍚�) */
+    @ApiModelProperty("鏄惁涓虹郴鍒椾細璁�(1:鏄�,0:鍚�)")
+    @Excel(name = "鏄惁涓虹郴鍒椾細璁�(1:鏄�,0:鍚�)")
+    private Integer isRecurring;
+
+    /** 閲嶅妯″紡 */
+    @ApiModelProperty("閲嶅妯″紡")
+    @Excel(name = "閲嶅妯″紡")
+    private String recurringPattern;
+
+    /** 鐖朵細璁甀D(鐢ㄤ簬澶嶅埗鎴栫郴鍒椾細璁�) */
+    @ApiModelProperty("鐖朵細璁甀D(鐢ㄤ簬澶嶅埗鎴栫郴鍒椾細璁�)")
+    @Excel(name = "鐖朵細璁甀D(鐢ㄤ簬澶嶅埗鎴栫郴鍒椾細璁�)")
+    private Integer parentMeetingId;
+
+    /** 鎻愬墠鎻愰啋鍒嗛挓鏁� */
+    @ApiModelProperty("鎻愬墠鎻愰啋鍒嗛挓鏁�")
+    @Excel(name = "鎻愬墠鎻愰啋鍒嗛挓鏁�")
+    private Long reminderMinutes;
+
+    /** 绾鍐呭 */
+    @ApiModelProperty("绾鍐呭")
+    @Excel(name = "绾鍐呭")
+    private String recordcontent;
+
+    /** 绾闄勪欢(JSON鏍煎紡) */
+    @ApiModelProperty("绾闄勪欢(JSON鏍煎紡)")
+    @Excel(name = "绾闄勪欢(JSON鏍煎紡)")
+    private String recordattachment;
+
+    /** 璁板綍浜� */
+    @ApiModelProperty("璁板綍浜�")
+    @Excel(name = "璁板綍浜�")
+    private String recorderBy;
+
+    /** 鍒涘缓鏃堕棿 */
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "鍒涘缓鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date recorderTime;
+
+    /** 瀹℃牳浜篒D */
+    @ApiModelProperty("瀹℃牳浜篒D")
+    @Excel(name = "瀹℃牳浜篒D")
+    private String approverBy;
+
+    /** 瀹℃牳鐘舵��(0:寰呭鏍�,1:宸查�氳繃,2:宸查┏鍥�) */
+    @ApiModelProperty("瀹℃牳鐘舵��(0:寰呭鏍�,1:宸查�氳繃,2:宸查┏鍥�)")
+    @Excel(name = "瀹℃牳鐘舵��(0:寰呭鏍�,1:宸查�氳繃,2:宸查┏鍥�)")
+    private Integer approvalStatus;
+
+    /** 瀹℃牳鏃堕棿 */
+    @ApiModelProperty("瀹℃牳鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "瀹℃牳鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date approvalTime;
+
+    /** 鍒涘缓浜� */
+    @ApiModelProperty("鍒涘缓浜�")
+    @Excel(name = "鍒涘缓浜�")
+    private String createdBy;
+
+    /** 鍒涘缓鏃堕棿 */
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "鍒涘缓鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date createdTime;
+
+    /** 鏇存柊浜� */
+    @ApiModelProperty("鏇存柊浜�")
+    @Excel(name = "鏇存柊浜�")
+    private String updatedBy;
+
+    /** 鏇存柊鏃堕棿 */
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "鏇存柊鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date updatedTime;
+
+}
+
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceMeetingParticipant.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceMeetingParticipant.java
new file mode 100644
index 0000000..aacc72d
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceMeetingParticipant.java
@@ -0,0 +1,102 @@
+package com.ruoyi.project.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鍙備細浜哄憳瀵硅薄 service_meeting_participant
+ * 
+ * @author ls
+ * @date 2025-12-28
+ */
+@Data
+@ApiModel("鍙備細浜哄憳")
+public class ServiceMeetingParticipant extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 鍙備細璁板綍ID */
+    @ApiModelProperty("鍙備細璁板綍ID")
+    //鏁版嵁搴撹嚜澧炴敼鎴怈TableId(type = IdType.AUTO)
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /** 浼氳ID */
+    @ApiModelProperty("浼氳ID")
+    @Excel(name = "浼氳ID")
+    private Integer meetingId;
+
+    /** 鐢ㄦ埛缂栧彿 */
+    @ApiModelProperty("鐢ㄦ埛缂栧彿")
+    @Excel(name = "鐢ㄦ埛缂栧彿")
+    private String userNo;
+
+    /** 鐢ㄦ埛濮撳悕 */
+    @ApiModelProperty("鐢ㄦ埛濮撳悕")
+    @Excel(name = "鐢ㄦ埛濮撳悕")
+    private String userName;
+
+    /** 瑙掕壊(host:涓绘寔浜�,participant:鍙備細浜�,guest:鍢夊) */
+    @ApiModelProperty("瑙掕壊(host:涓绘寔浜�,participant:鍙備細浜�,guest:鍢夊)")
+    @Excel(name = "瑙掕壊(host:涓绘寔浜�,participant:鍙備細浜�,guest:鍢夊)")
+    private String role;
+
+    /** 鍑哄腑鐘舵��(0:鏈‘璁�,1:宸茬‘璁�,2:宸叉嫆缁�,3:宸插嚭甯�,4:鏈嚭甯�) */
+    @ApiModelProperty("鍑哄腑鐘舵��(0:鏈‘璁�,1:宸茬‘璁�,2:宸叉嫆缁�,3:宸插嚭甯�,4:鏈嚭甯�)")
+    @Excel(name = "鍑哄腑鐘舵��(0:鏈‘璁�,1:宸茬‘璁�,2:宸叉嫆缁�,3:宸插嚭甯�,4:鏈嚭甯�)")
+    private Integer attendanceStatus;
+
+    /** 鏄惁蹇呴渶鍙備細(1:鏄�,0:鍚�) */
+    @ApiModelProperty("鏄惁蹇呴渶鍙備細(1:鏄�,0:鍚�)")
+    @Excel(name = "鏄惁蹇呴渶鍙備細(1:鏄�,0:鍚�)")
+    private Integer isRequired;
+
+    /** 纭鏃堕棿 */
+    @ApiModelProperty("纭鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "纭鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date confirmationTime;
+
+    /** 绛惧埌鏃堕棿 */
+    @ApiModelProperty("绛惧埌鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "绛惧埌鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date checkInTime;
+
+    /** 绛鹃��鏃堕棿 */
+    @ApiModelProperty("绛鹃��鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "绛鹃��鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date checkOutTime;
+
+    /** 鍒涘缓浜� */
+    @ApiModelProperty("鍒涘缓浜�")
+    @Excel(name = "鍒涘缓浜�")
+    private String createdBy;
+
+    /** 鍒涘缓鏃堕棿 */
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "鍒涘缓鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date createdTime;
+
+    /** 鏇存柊浜� */
+    @ApiModelProperty("鏇存柊浜�")
+    @Excel(name = "鏇存柊浜�")
+    private String updatedBy;
+
+    /** 鏇存柊鏃堕棿 */
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "鏇存柊鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date updatedTime;
+
+}
+
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceTrainingRecords.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceTrainingRecords.java
new file mode 100644
index 0000000..0996ca8
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceTrainingRecords.java
@@ -0,0 +1,150 @@
+package com.ruoyi.project.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 浜哄憳杩涗慨绠$悊瀵硅薄 service_training_records
+ * 
+ * @author ls
+ * @date 2025-12-28
+ */
+@Data
+@ApiModel("浜哄憳杩涗慨绠$悊")
+public class ServiceTrainingRecords extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 璁板綍ID锛堜富閿級 */
+    @ApiModelProperty("璁板綍ID锛堜富閿級")
+    //鏁版嵁搴撹嚜澧炴敼鎴怈TableId(type = IdType.AUTO)
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /** 濮撳悕 */
+    @ApiModelProperty("濮撳悕")
+    @Excel(name = "濮撳悕")
+    private String name;
+
+    /** 鎬у埆 */
+    @ApiModelProperty("鎬у埆")
+    @Excel(name = "鎬у埆")
+    private String sex;
+
+    /** 骞撮緞 */
+    @ApiModelProperty("骞撮緞")
+    @Excel(name = "骞撮緞")
+    private Integer age;
+
+    /** 瀛﹀巻 */
+    @ApiModelProperty("瀛﹀巻")
+    @Excel(name = "瀛﹀巻")
+    private String education;
+
+    /** 杩涗慨绫诲瀷 */
+    @ApiModelProperty("杩涗慨绫诲瀷")
+    @Excel(name = "杩涗慨绫诲瀷")
+    private String trainingType;
+
+    /** 韬唤璇佸彿鐮侊紙鍞竴锛� */
+    @ApiModelProperty("韬唤璇佸彿鐮侊紙鍞竴锛�")
+    @Excel(name = "韬唤璇佸彿鐮�", readConverterExp = "鍞�=涓�")
+    private String idCard;
+
+    /** 姣曚笟闄㈡牎 */
+    @ApiModelProperty("姣曚笟闄㈡牎")
+    @Excel(name = "姣曚笟闄㈡牎")
+    private String graduationSchool;
+
+    /** 鎵�鍦ㄥ崟浣� */
+    @ApiModelProperty("鎵�鍦ㄥ崟浣�")
+    @Excel(name = "鎵�鍦ㄥ崟浣�")
+    private String workUnit;
+
+    /** 鎶�鏈亴绉� */
+    @ApiModelProperty("鎶�鏈亴绉�")
+    @Excel(name = "鎶�鏈亴绉�")
+    private String technicalTitle;
+
+    /** 浠庝簨涓撲笟 */
+    @ApiModelProperty("浠庝簨涓撲笟")
+    @Excel(name = "浠庝簨涓撲笟")
+    private String profession;
+
+    /** 宸ヤ綔骞撮檺锛堝勾锛� */
+    @ApiModelProperty("宸ヤ綔骞撮檺锛堝勾锛�")
+    @Excel(name = "宸ヤ綔骞撮檺", readConverterExp = "骞�=")
+    private BigDecimal workYears;
+
+    /** 杩涗慨鐩爣 */
+    @ApiModelProperty("杩涗慨鐩爣")
+    @Excel(name = "杩涗慨鐩爣")
+    private String trainingGoal;
+
+    /** 杩涗慨寮�濮嬫椂闂� */
+    @ApiModelProperty("杩涗慨寮�濮嬫椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "杩涗慨寮�濮嬫椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date trainingStartDate;
+
+    /** 杩涗慨缁撴潫鏃堕棿 */
+    @ApiModelProperty("杩涗慨缁撴潫鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "杩涗慨缁撴潫鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date trainingEndDate;
+
+    /** 杩涗慨涓撲笟 */
+    @ApiModelProperty("杩涗慨涓撲笟")
+    @Excel(name = "杩涗慨涓撲笟")
+    private String trainingMajor;
+
+    /** 浠庝簨宸ヤ綔鎯呭喌 */
+    @ApiModelProperty("浠庝簨宸ヤ綔鎯呭喌")
+    @Excel(name = "浠庝簨宸ヤ綔鎯呭喌")
+    private String workSituation;
+
+    /** 鏈鐢宠杩涗慨绉戠洰 */
+    @ApiModelProperty("鏈鐢宠杩涗慨绉戠洰")
+    @Excel(name = "鏈鐢宠杩涗慨绉戠洰")
+    private String applySubject;
+
+    /** 杩涗慨鐩殑瑕佹眰 */
+    @ApiModelProperty("杩涗慨鐩殑瑕佹眰")
+    @Excel(name = "杩涗慨鐩殑瑕佹眰")
+    private String applyPurpose;
+
+    /** 涓昏瀛﹀巻 */
+    @ApiModelProperty("涓昏瀛﹀巻")
+    @Excel(name = "涓昏瀛﹀巻")
+    private String mainEducation;
+
+    /** 涓昏宸ヤ綔缁忓巻 */
+    @ApiModelProperty("涓昏宸ヤ綔缁忓巻")
+    @Excel(name = "涓昏宸ヤ綔缁忓巻")
+    private String mainExperience;
+
+    /** 璁板綍鐘舵�� */
+    @ApiModelProperty("璁板綍鐘舵��")
+    @Excel(name = "璁板綍鐘舵��")
+    private String recordStatus;
+
+    /** 鏄惁涓哄鍒惰褰曪紙0:鍚︼紝1:鏄級 */
+    @ApiModelProperty("鏄惁涓哄鍒惰褰曪紙0:鍚︼紝1:鏄級")
+    @Excel(name = "鏄惁涓哄鍒惰褰�", readConverterExp = "0=:鍚︼紝1:鏄�")
+    private Integer isCopy;
+
+    /** 鍘熻褰旾D锛堝鏋滄槸澶嶅埗璁板綍锛� */
+    @ApiModelProperty("鍘熻褰旾D锛堝鏋滄槸澶嶅埗璁板綍锛�")
+    @Excel(name = "鍘熻褰旾D", readConverterExp = "濡�=鏋滄槸澶嶅埗璁板綍")
+    private Long originalId;
+
+}
+
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/VUserOrg.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/VUserOrg.java
new file mode 100644
index 0000000..5f8907e
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/VUserOrg.java
@@ -0,0 +1,84 @@
+package com.ruoyi.project.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * VIEW瀵硅薄 v_user_org
+ *
+ * @author ruoyi
+ * @date 2025-12-27
+ */
+@Data
+@ApiModel("VIEW")
+public class VUserOrg extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 鐢ㄦ埛ID */
+    @ApiModelProperty("鐢ㄦ埛ID")
+    @Excel(name = "鐢ㄦ埛ID")
+    private Long userId;
+
+    /** 甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛� */
+    @ApiModelProperty("甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛�")
+    @Excel(name = "甯愬彿鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤")
+    private String status;
+
+    /** 鐢ㄦ埛璐﹀彿 */
+    @ApiModelProperty("鐢ㄦ埛璐﹀彿")
+    @Excel(name = "鐢ㄦ埛璐﹀彿")
+    private String userName;
+
+    /** 鐢ㄦ埛鏄电О */
+    @ApiModelProperty("鐢ㄦ埛鏄电О")
+    @Excel(name = "鐢ㄦ埛鏄电О")
+    private String nickName;
+
+    /** 鐢ㄦ埛绫诲瀷锛�00绯荤粺鐢ㄦ埛锛� */
+    @ApiModelProperty("鐢ㄦ埛绫诲瀷锛�00绯荤粺鐢ㄦ埛锛�")
+    @Excel(name = "鐢ㄦ埛绫诲瀷", readConverterExp = "0=0绯荤粺鐢ㄦ埛")
+    private String userType;
+
+    /** 鎵嬫満鍙风爜 */
+    @ApiModelProperty("鎵嬫満鍙风爜")
+    @Excel(name = "鎵嬫満鍙风爜")
+    private String phonenumber;
+
+    /** 閮ㄩ棬ID */
+    @ApiModelProperty("閮ㄩ棬ID")
+    @Excel(name = "閮ㄩ棬ID")
+    private Long deptId;
+
+    /** 涓婚敭鑷 */
+    @ApiModelProperty("涓婚敭鑷")
+    @Excel(name = "涓婚敭鑷")
+    private Long orgId;
+
+    /** 缁勭粐缂栧彿 */
+    @ApiModelProperty("缁勭粐缂栧彿")
+    @Excel(name = "缁勭粐缂栧彿")
+    private String organizationid;
+
+    /** 缁勭粐鍚嶇О */
+    @ApiModelProperty("缁勭粐鍚嶇О")
+    @Excel(name = "缁勭粐鍚嶇О")
+    private String organizationname;
+
+    /** 鍗忚皟鍛樼紪鍙� */
+    @ApiModelProperty("鍗忚皟鍛樼紪鍙�")
+    @Excel(name = "鍗忚皟鍛樼紪鍙�")
+    private String coordinatorNo;
+
+    /** 鍗忚皟鍛樺鍚� */
+    @ApiModelProperty("鍗忚皟鍛樺鍚�")
+    @Excel(name = "鍗忚皟鍛樺鍚�")
+    private String coordinatorName;
+
+}
+
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceAttendancerecordsMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceAttendancerecordsMapper.java
new file mode 100644
index 0000000..cc871f7
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceAttendancerecordsMapper.java
@@ -0,0 +1,26 @@
+package com.ruoyi.project.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.project.domain.ServiceAttendancerecords;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 鑰冨嫟璁板綍Mapper鎺ュ彛
+ *
+ * @author ls
+ * @date 2025-12-28
+ */
+@Mapper
+public interface ServiceAttendancerecordsMapper extends BaseMapper<ServiceAttendancerecords>
+{
+    /**
+     * 鏌ヨ鑰冨嫟璁板綍鍒楄〃
+     *
+     * @param serviceAttendancerecords 鑰冨嫟璁板綍
+     * @return 鑰冨嫟璁板綍闆嗗悎
+     */
+    public List<ServiceAttendancerecords> selectServiceAttendancerecordsList(ServiceAttendancerecords serviceAttendancerecords);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonatemaintenanceMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonatemaintenanceMapper.java
new file mode 100644
index 0000000..6c90d23
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonatemaintenanceMapper.java
@@ -0,0 +1,25 @@
+package com.ruoyi.project.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.project.domain.ServiceDonatemaintenance;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 渚涗綋缁存姢璁板綍Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-12-27
+ */
+@Mapper
+public interface ServiceDonatemaintenanceMapper extends BaseMapper<ServiceDonatemaintenance> {
+    /**
+     * 鏌ヨ渚涗綋缁存姢璁板綍鍒楄〃
+     *
+     * @param serviceDonatemaintenance 渚涗綋缁存姢璁板綍
+     * @return 渚涗綋缁存姢璁板綍闆嗗悎
+     */
+    public List<ServiceDonatemaintenance> selectServiceDonatemaintenanceList(ServiceDonatemaintenance serviceDonatemaintenance);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceMeetingMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceMeetingMapper.java
new file mode 100644
index 0000000..76cc419
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceMeetingMapper.java
@@ -0,0 +1,25 @@
+package com.ruoyi.project.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import com.ruoyi.project.domain.ServiceMeeting;
+
+/**
+ * 浼氳绾Mapper鎺ュ彛
+ *
+ * @author ls
+ * @date 2025-12-28
+ */
+@Mapper
+public interface ServiceMeetingMapper extends BaseMapper<ServiceMeeting>
+{
+    /**
+     * 鏌ヨ浼氳绾鍒楄〃
+     *
+     * @param serviceMeeting 浼氳绾
+     * @return 浼氳绾闆嗗悎
+     */
+    public List<ServiceMeeting> selectServiceMeetingList(ServiceMeeting serviceMeeting);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceMeetingParticipantMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceMeetingParticipantMapper.java
new file mode 100644
index 0000000..7d9fd8f
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceMeetingParticipantMapper.java
@@ -0,0 +1,25 @@
+package com.ruoyi.project.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import com.ruoyi.project.domain.ServiceMeetingParticipant;
+
+/**
+ * 鍙備細浜哄憳Mapper鎺ュ彛
+ *
+ * @author ls
+ * @date 2025-12-28
+ */
+@Mapper
+public interface ServiceMeetingParticipantMapper extends BaseMapper<ServiceMeetingParticipant>
+{
+    /**
+     * 鏌ヨ鍙備細浜哄憳鍒楄〃
+     *
+     * @param serviceMeetingParticipant 鍙備細浜哄憳
+     * @return 鍙備細浜哄憳闆嗗悎
+     */
+    public List<ServiceMeetingParticipant> selectServiceMeetingParticipantList(ServiceMeetingParticipant serviceMeetingParticipant);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceTrainingRecordsMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceTrainingRecordsMapper.java
new file mode 100644
index 0000000..40b8c5a
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceTrainingRecordsMapper.java
@@ -0,0 +1,25 @@
+package com.ruoyi.project.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import com.ruoyi.project.domain.ServiceTrainingRecords;
+
+/**
+ * 浜哄憳杩涗慨绠$悊Mapper鎺ュ彛
+ *
+ * @author ls
+ * @date 2025-12-28
+ */
+@Mapper
+public interface ServiceTrainingRecordsMapper extends BaseMapper<ServiceTrainingRecords>
+{
+    /**
+     * 鏌ヨ浜哄憳杩涗慨绠$悊鍒楄〃
+     *
+     * @param serviceTrainingRecords 浜哄憳杩涗慨绠$悊
+     * @return 浜哄憳杩涗慨绠$悊闆嗗悎
+     */
+    public List<ServiceTrainingRecords> selectServiceTrainingRecordsList(ServiceTrainingRecords serviceTrainingRecords);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/VUserOrgMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/VUserOrgMapper.java
new file mode 100644
index 0000000..5b52de4
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/VUserOrgMapper.java
@@ -0,0 +1,25 @@
+package com.ruoyi.project.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.project.domain.VUserOrg;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * VIEWMapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-12-27
+ */
+@Mapper
+public interface VUserOrgMapper extends BaseMapper<VUserOrg>
+{
+    /**
+     * 鏌ヨVIEW鍒楄〃
+     *
+     * @param vUserOrg VIEW
+     * @return VIEW闆嗗悎
+     */
+    public List<VUserOrg> selectVUserOrgList(VUserOrg vUserOrg);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceAttendancerecordsService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceAttendancerecordsService.java
new file mode 100644
index 0000000..704b9d2
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceAttendancerecordsService.java
@@ -0,0 +1,23 @@
+package com.ruoyi.project.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.project.domain.ServiceAttendancerecords;
+
+/**
+ * 鑰冨嫟璁板綍Service鎺ュ彛
+ * 
+ * @author ls
+ * @date 2025-12-28
+ */
+public interface IServiceAttendancerecordsService extends IService<ServiceAttendancerecords>
+{
+
+    /**
+     * 鏌ヨ鑰冨嫟璁板綍鍒楄〃
+     * 
+     * @param serviceAttendancerecords 鑰冨嫟璁板綍
+     * @return 鑰冨嫟璁板綍闆嗗悎
+     */
+    public List<ServiceAttendancerecords> queryList(ServiceAttendancerecords serviceAttendancerecords);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatebaseinfoReportService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatebaseinfoReportService.java
index b1d23d1..0db5f9f 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatebaseinfoReportService.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatebaseinfoReportService.java
@@ -29,5 +29,10 @@
      * @param serviceDonatebaseinfoReport 鎹愮尞涓婃姤鍩虹
      * @return 鎹愮尞涓婃姤鍩虹闆嗗悎
      */
-    public Map<String,Object> getTotal(ServiceDonatebaseinfoReport serviceDonatebaseinfoReport, String type);
+    public Map<String, Object> getTotal(ServiceDonatebaseinfoReport serviceDonatebaseinfoReport, String type);
+
+    /**
+     * 寤烘。
+     */
+    public Boolean createDocument(ServiceDonatebaseinfoReport serviceDonatebaseinfoReport);
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatemaintenanceService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatemaintenanceService.java
new file mode 100644
index 0000000..bc7bdac
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatemaintenanceService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.project.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.project.domain.ServiceDonatemaintenance;
+
+import java.util.List;
+
+/**
+ * 渚涗綋缁存姢璁板綍Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-12-27
+ */
+public interface IServiceDonatemaintenanceService extends IService<ServiceDonatemaintenance>
+{
+
+    /**
+     * 鏌ヨ渚涗綋缁存姢璁板綍鍒楄〃
+     *
+     * @param serviceDonatemaintenance 渚涗綋缁存姢璁板綍
+     * @return 渚涗綋缁存姢璁板綍闆嗗悎
+     */
+    public List<ServiceDonatemaintenance> queryList(ServiceDonatemaintenance serviceDonatemaintenance);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceMeetingParticipantService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceMeetingParticipantService.java
new file mode 100644
index 0000000..fe4bb14
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceMeetingParticipantService.java
@@ -0,0 +1,23 @@
+package com.ruoyi.project.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.project.domain.ServiceMeetingParticipant;
+
+/**
+ * 鍙備細浜哄憳Service鎺ュ彛
+ * 
+ * @author ls
+ * @date 2025-12-28
+ */
+public interface IServiceMeetingParticipantService extends IService<ServiceMeetingParticipant>
+{
+
+    /**
+     * 鏌ヨ鍙備細浜哄憳鍒楄〃
+     * 
+     * @param serviceMeetingParticipant 鍙備細浜哄憳
+     * @return 鍙備細浜哄憳闆嗗悎
+     */
+    public List<ServiceMeetingParticipant> queryList(ServiceMeetingParticipant serviceMeetingParticipant);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceMeetingService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceMeetingService.java
new file mode 100644
index 0000000..a1474ce
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceMeetingService.java
@@ -0,0 +1,23 @@
+package com.ruoyi.project.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.project.domain.ServiceMeeting;
+
+/**
+ * 浼氳绾Service鎺ュ彛
+ * 
+ * @author ls
+ * @date 2025-12-28
+ */
+public interface IServiceMeetingService extends IService<ServiceMeeting>
+{
+
+    /**
+     * 鏌ヨ浼氳绾鍒楄〃
+     * 
+     * @param serviceMeeting 浼氳绾
+     * @return 浼氳绾闆嗗悎
+     */
+    public List<ServiceMeeting> queryList(ServiceMeeting serviceMeeting);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceTrainingRecordsService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceTrainingRecordsService.java
new file mode 100644
index 0000000..4e3efc3
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceTrainingRecordsService.java
@@ -0,0 +1,23 @@
+package com.ruoyi.project.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.project.domain.ServiceTrainingRecords;
+
+/**
+ * 浜哄憳杩涗慨绠$悊Service鎺ュ彛
+ * 
+ * @author ls
+ * @date 2025-12-28
+ */
+public interface IServiceTrainingRecordsService extends IService<ServiceTrainingRecords>
+{
+
+    /**
+     * 鏌ヨ浜哄憳杩涗慨绠$悊鍒楄〃
+     * 
+     * @param serviceTrainingRecords 浜哄憳杩涗慨绠$悊
+     * @return 浜哄憳杩涗慨绠$悊闆嗗悎
+     */
+    public List<ServiceTrainingRecords> queryList(ServiceTrainingRecords serviceTrainingRecords);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IVUserOrgService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IVUserOrgService.java
new file mode 100644
index 0000000..073d377
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IVUserOrgService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.project.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.project.domain.VUserOrg;
+
+import java.util.List;
+
+/**
+ * VIEWService鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-12-27
+ */
+public interface IVUserOrgService extends IService<VUserOrg>
+{
+
+    /**
+     * 鏌ヨVIEW鍒楄〃
+     *
+     * @param vUserOrg VIEW
+     * @return VIEW闆嗗悎
+     */
+    public List<VUserOrg> queryList(VUserOrg vUserOrg);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/BaseOrganizationServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/BaseOrganizationServiceImpl.java
index 455b619..6a34f36 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/BaseOrganizationServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/BaseOrganizationServiceImpl.java
@@ -101,6 +101,18 @@
         if (StringUtils.isNotBlank(baseOrganization.getCommunity())) {
             wrappers.eq(BaseOrganization::getCommunity, baseOrganization.getCommunity());
         }
+        if (StringUtils.isNotBlank(baseOrganization.getReporterNo())) {
+            wrappers.eq(BaseOrganization::getReporterNo, baseOrganization.getReporterNo());
+        }
+        if (StringUtils.isNotBlank(baseOrganization.getReporterName())) {
+            wrappers.eq(BaseOrganization::getReporterName, baseOrganization.getReporterName());
+        }
+        if (StringUtils.isNotBlank(baseOrganization.getCoordinatorNo())) {
+            wrappers.eq(BaseOrganization::getCoordinatorNo, baseOrganization.getCoordinatorNo());
+        }
+        if (StringUtils.isNotBlank(baseOrganization.getCoordinatorName())) {
+            wrappers.eq(BaseOrganization::getCoordinatorName, baseOrganization.getCoordinatorName());
+        }
         if (StringUtils.isNotBlank(baseOrganization.getCommunityname())) {
             wrappers.like(BaseOrganization::getCommunityname, baseOrganization.getCommunityname());
         }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceAttendancerecordsServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceAttendancerecordsServiceImpl.java
new file mode 100644
index 0000000..26f7fb4
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceAttendancerecordsServiceImpl.java
@@ -0,0 +1,91 @@
+package com.ruoyi.project.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.ArrayList;
+import java.util.Map;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.project.mapper.ServiceAttendancerecordsMapper;
+import com.ruoyi.project.domain.ServiceAttendancerecords;
+import com.ruoyi.project.service.IServiceAttendancerecordsService;
+
+/**
+ * 鑰冨嫟璁板綍Service涓氬姟灞傚鐞�
+ * 
+ * @author ls
+ * @date 2025-12-28
+ */
+@Service
+public class ServiceAttendancerecordsServiceImpl extends ServiceImpl<ServiceAttendancerecordsMapper, ServiceAttendancerecords> implements IServiceAttendancerecordsService 
+{
+
+
+    /**
+     * 鏌ヨ鑰冨嫟璁板綍鍒楄〃
+     * 
+     * @param serviceAttendancerecords 鑰冨嫟璁板綍
+     * @return 鑰冨嫟璁板綍
+     */
+    @Override
+    public List<ServiceAttendancerecords> queryList(ServiceAttendancerecords serviceAttendancerecords) {
+        LambdaQueryWrapper<ServiceAttendancerecords> wrappers = Wrappers.lambdaQuery();
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getUserNo())){
+            wrappers.eq(ServiceAttendancerecords::getUserNo ,serviceAttendancerecords.getUserNo());
+        }
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getUserName())){
+            wrappers.like(ServiceAttendancerecords::getUserName ,serviceAttendancerecords.getUserName());
+        }
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getDeptNo())){
+            wrappers.eq(ServiceAttendancerecords::getDeptNo ,serviceAttendancerecords.getDeptNo());
+        }
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getDeptName())){
+            wrappers.like(ServiceAttendancerecords::getDeptName ,serviceAttendancerecords.getDeptName());
+        }
+        if (serviceAttendancerecords.getAttendanceDate() != null){
+            wrappers.eq(ServiceAttendancerecords::getAttendanceDate ,serviceAttendancerecords.getAttendanceDate());
+        }
+        if (serviceAttendancerecords.getClockInTime() != null){
+            wrappers.eq(ServiceAttendancerecords::getClockInTime ,serviceAttendancerecords.getClockInTime());
+        }
+        if (serviceAttendancerecords.getClockOutTime() != null){
+            wrappers.eq(ServiceAttendancerecords::getClockOutTime ,serviceAttendancerecords.getClockOutTime());
+        }
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getAttendanceStatus())){
+            wrappers.eq(ServiceAttendancerecords::getAttendanceStatus ,serviceAttendancerecords.getAttendanceStatus());
+        }
+        if (serviceAttendancerecords.getWorkHoursMinutes() != null){
+            wrappers.eq(ServiceAttendancerecords::getWorkHoursMinutes ,serviceAttendancerecords.getWorkHoursMinutes());
+        }
+        if (serviceAttendancerecords.getOvertimeMinutes() != null){
+            wrappers.eq(ServiceAttendancerecords::getOvertimeMinutes ,serviceAttendancerecords.getOvertimeMinutes());
+        }
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getReason())){
+            wrappers.eq(ServiceAttendancerecords::getReason ,serviceAttendancerecords.getReason());
+        }
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getAbnormalReason())){
+            wrappers.eq(ServiceAttendancerecords::getAbnormalReason ,serviceAttendancerecords.getAbnormalReason());
+        }
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getClockInMethod())){
+            wrappers.eq(ServiceAttendancerecords::getClockInMethod ,serviceAttendancerecords.getClockInMethod());
+        }
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getClockOutMethod())){
+            wrappers.eq(ServiceAttendancerecords::getClockOutMethod ,serviceAttendancerecords.getClockOutMethod());
+        }
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getClockInLocation())){
+            wrappers.eq(ServiceAttendancerecords::getClockInLocation ,serviceAttendancerecords.getClockInLocation());
+        }
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getClockOutLocation())){
+            wrappers.eq(ServiceAttendancerecords::getClockOutLocation ,serviceAttendancerecords.getClockOutLocation());
+        }
+        if (StringUtils.isNotBlank(serviceAttendancerecords.getDataSource())){
+            wrappers.eq(ServiceAttendancerecords::getDataSource ,serviceAttendancerecords.getDataSource());
+        }
+        return this.list(wrappers);
+    }
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoReportServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoReportServiceImpl.java
index 60f40e7..fb10d55 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoReportServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoReportServiceImpl.java
@@ -5,14 +5,18 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.bean.DtoConversionUtils;
 import com.ruoyi.project.common.CalculateDateUtils;
+import com.ruoyi.project.domain.ServiceDonatebaseinfo;
 import com.ruoyi.project.domain.ServiceDonatebaseinfoReport;
 import com.ruoyi.project.domain.ServiceDonatebaseinfoReportFile;
 import com.ruoyi.project.domain.ServiceTransport;
 import com.ruoyi.project.mapper.ServiceDonatebaseinfoReportMapper;
 import com.ruoyi.project.service.IServiceDonatebaseinfoReportFileService;
 import com.ruoyi.project.service.IServiceDonatebaseinfoReportService;
+import com.ruoyi.project.service.IServiceDonatebaseinfoService;
 import com.ruoyi.project.service.IServiceTransportService;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -35,9 +39,10 @@
     private IServiceDonatebaseinfoReportFileService serviceDonatebaseinfoReportFileService;
     @Autowired
     private IServiceTransportService serviceTransportService;
-
     @Autowired
     private ServiceDonatebaseinfoReportMapper serviceDonatebaseinfoReportMapper;
+    @Autowired
+    private IServiceDonatebaseinfoService serviceDonatebaseinfoService;
 
     /**
      * 鏌ヨ鎹愮尞涓婃姤鍩虹鍒楄〃
@@ -48,6 +53,11 @@
     @Override
     public Page<ServiceDonatebaseinfoReport> queryList(ServiceDonatebaseinfoReport serviceDonatebaseinfoReport) {
         LambdaQueryWrapper<ServiceDonatebaseinfoReport> wrappers = getWrapper(serviceDonatebaseinfoReport);
+        // 娣诲姞create_time涓嶄负绌虹殑鏉′欢
+        wrappers.isNotNull(ServiceDonatebaseinfoReport::getCreateTime);
+        // 鐒跺悗杩涜鍊掑簭鎺掑簭
+        wrappers.orderByDesc(ServiceDonatebaseinfoReport::getCreateTime);
+
         // 鍒涘缓鍒嗛〉瀵硅薄锛岃缃〉鐮佸拰姣忛〉澶у皬
         int currentPage = (serviceDonatebaseinfoReport.getPageNum() == null || serviceDonatebaseinfoReport.getPageNum() < 1) ? 1 : serviceDonatebaseinfoReport.getPageNum();
         int size = (serviceDonatebaseinfoReport.getPageSize() == null || serviceDonatebaseinfoReport.getPageSize() < 1) ? 10 : serviceDonatebaseinfoReport.getPageSize();
@@ -101,6 +111,30 @@
         //鎵�鏈夌姸鎬佺殑鎬绘暟
         map.put("all", all);
         return map;
+    }
+
+    /**
+     * 鍒涘缓妗f
+     *
+     * @param serviceDonatebaseinfoReport
+     * @return
+     */
+    @Override
+    public Boolean createDocument(ServiceDonatebaseinfoReport serviceDonatebaseinfoReport) {
+        //灏唕eport鏁版嵁澶嶅埗鍒皊erviceDonatebaseinfo涓�
+        ServiceDonatebaseinfo serviceDonatebaseinfo1 = DtoConversionUtils.sourceToTarget(serviceDonatebaseinfoReport, ServiceDonatebaseinfo.class);
+        serviceDonatebaseinfo1.setId(null);
+        //鍏堥�氳繃caseNo鏌ヨ鏄惁瀛樺湪
+        ServiceDonatebaseinfo serviceDonatebaseinfo = new ServiceDonatebaseinfo();
+        serviceDonatebaseinfo.setCaseNo(serviceDonatebaseinfoReport.getCaseNo());
+        List<ServiceDonatebaseinfo> serviceDonatebaseinfos = serviceDonatebaseinfoService.queryList(serviceDonatebaseinfo);
+        if (CollectionUtils.isNotEmpty(serviceDonatebaseinfos) && serviceDonatebaseinfos.size() > 0) {
+            serviceDonatebaseinfo1.setId(serviceDonatebaseinfos.get(0).getId());
+            serviceDonatebaseinfoService.updateById(serviceDonatebaseinfo1);
+            return true;
+        }
+        //鍒涘缓
+        return serviceDonatebaseinfoService.save(serviceDonatebaseinfo1);
     }
 
     private LambdaQueryWrapper<ServiceDonatebaseinfoReport> getWrapper(ServiceDonatebaseinfoReport serviceDonatebaseinfoReport) {
@@ -216,11 +250,11 @@
         if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getPatientstate())) {
             wrappers.eq(ServiceDonatebaseinfoReport::getPatientstate, serviceDonatebaseinfoReport.getPatientstate());
         }
-        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getReporterno())) {
-            wrappers.eq(ServiceDonatebaseinfoReport::getReporterno, serviceDonatebaseinfoReport.getReporterno());
+        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getInfoNo())) {
+            wrappers.eq(ServiceDonatebaseinfoReport::getInfoNo, serviceDonatebaseinfoReport.getInfoNo());
         }
-        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getReportername())) {
-            wrappers.like(ServiceDonatebaseinfoReport::getReportername, serviceDonatebaseinfoReport.getReportername());
+        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getInfoName())) {
+            wrappers.like(ServiceDonatebaseinfoReport::getInfoName, serviceDonatebaseinfoReport.getInfoName());
         }
         if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getReporterphone())) {
             wrappers.eq(ServiceDonatebaseinfoReport::getReporterphone, serviceDonatebaseinfoReport.getReporterphone());
@@ -231,12 +265,6 @@
         if (serviceDonatebaseinfoReport.getTerminationCase() != null) {
             wrappers.eq(ServiceDonatebaseinfoReport::getTerminationCase, serviceDonatebaseinfoReport.getTerminationCase());
         }
-        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getUserNo())) {
-            wrappers.eq(ServiceDonatebaseinfoReport::getUserNo, serviceDonatebaseinfoReport.getUserNo());
-        }
-        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getUserName())) {
-            wrappers.eq(ServiceDonatebaseinfoReport::getUserName, serviceDonatebaseinfoReport.getUserName());
-        }
         if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getDeptNo())) {
             wrappers.eq(ServiceDonatebaseinfoReport::getDeptNo, serviceDonatebaseinfoReport.getDeptNo());
         }
@@ -246,9 +274,22 @@
         if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getIsTransport())) {
             wrappers.eq(ServiceDonatebaseinfoReport::getIsTransport, serviceDonatebaseinfoReport.getIsTransport());
         }
-        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getGscScore())) {
-            wrappers.eq(ServiceDonatebaseinfoReport::getGscScore, serviceDonatebaseinfoReport.getGscScore());
+        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getGcsScore())) {
+            wrappers.eq(ServiceDonatebaseinfoReport::getGcsScore, serviceDonatebaseinfoReport.getGcsScore());
         }
+        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getRhYin())) {
+            wrappers.eq(ServiceDonatebaseinfoReport::getRhYin, serviceDonatebaseinfoReport.getRhYin());
+        }
+        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getBloodType())) {
+            wrappers.eq(ServiceDonatebaseinfoReport::getBloodType, serviceDonatebaseinfoReport.getBloodType());
+        }
+        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getCoordinatorName())) {
+            wrappers.like(ServiceDonatebaseinfoReport::getCoordinatorName, serviceDonatebaseinfoReport.getCoordinatorName());
+        }
+        if (StringUtils.isNotBlank(serviceDonatebaseinfoReport.getCoordinatorNo())) {
+            wrappers.eq(ServiceDonatebaseinfoReport::getCoordinatorNo, serviceDonatebaseinfoReport.getCoordinatorNo());
+        }
+
         return wrappers;
     }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java
index c1b89d7..a839871 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java
@@ -114,7 +114,22 @@
             wrappers.like(ServiceDonatebaseinfo::getReportername, serviceDonatebaseinfo.getReportername());
         }
         if (StringUtils.isNotBlank(serviceDonatebaseinfo.getCaseNo())) {
-            wrappers.like(ServiceDonatebaseinfo::getCaseNo, serviceDonatebaseinfo.getCaseNo());
+            wrappers.eq(ServiceDonatebaseinfo::getCaseNo, serviceDonatebaseinfo.getCaseNo());
+        }
+        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getInfoName())) {
+            wrappers.like(ServiceDonatebaseinfo::getInfoName, serviceDonatebaseinfo.getInfoName());
+        }
+        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getInfoNo())) {
+            wrappers.eq(ServiceDonatebaseinfo::getInfoNo, serviceDonatebaseinfo.getInfoNo());
+        }
+        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getCoordinatorName())) {
+            wrappers.like(ServiceDonatebaseinfo::getCoordinatorName, serviceDonatebaseinfo.getCoordinatorName());
+        }
+        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getCoordinatorNo())) {
+            wrappers.eq(ServiceDonatebaseinfo::getCoordinatorNo, serviceDonatebaseinfo.getCoordinatorNo());
+        }
+        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getGcsScore())) {
+            wrappers.eq(ServiceDonatebaseinfo::getGcsScore, serviceDonatebaseinfo.getGcsScore());
         }
         Map<String, Object> params = serviceDonatebaseinfo.getParams();
         if (params.get("beginReporttime") != null && params.get("endReporttime") != null) {
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatemaintenanceServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatemaintenanceServiceImpl.java
new file mode 100644
index 0000000..23cde40
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatemaintenanceServiceImpl.java
@@ -0,0 +1,58 @@
+package com.ruoyi.project.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.project.domain.ServiceDonatemaintenance;
+import com.ruoyi.project.mapper.ServiceDonatemaintenanceMapper;
+import com.ruoyi.project.service.IServiceDonatemaintenanceService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 渚涗綋缁存姢璁板綍Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2025-12-27
+ */
+@Service
+public class ServiceDonatemaintenanceServiceImpl extends ServiceImpl<ServiceDonatemaintenanceMapper, ServiceDonatemaintenance> implements IServiceDonatemaintenanceService
+{
+
+
+    /**
+     * 鏌ヨ渚涗綋缁存姢璁板綍鍒楄〃
+     *
+     * @param serviceDonatemaintenance 渚涗綋缁存姢璁板綍
+     * @return 渚涗綋缁存姢璁板綍
+     */
+    @Override
+    public List<ServiceDonatemaintenance> queryList(ServiceDonatemaintenance serviceDonatemaintenance) {
+        LambdaQueryWrapper<ServiceDonatemaintenance> wrappers = Wrappers.lambdaQuery();
+        if (serviceDonatemaintenance.getInfoid() != null){
+            wrappers.eq(ServiceDonatemaintenance::getInfoid ,serviceDonatemaintenance.getInfoid());
+        }
+        if (StringUtils.isNotBlank(serviceDonatemaintenance.getCaseNo())){
+            wrappers.eq(ServiceDonatemaintenance::getCaseNo ,serviceDonatemaintenance.getCaseNo());
+        }
+        if (StringUtils.isNotBlank(serviceDonatemaintenance.getDonorno())){
+            wrappers.eq(ServiceDonatemaintenance::getDonorno ,serviceDonatemaintenance.getDonorno());
+        }
+        if (StringUtils.isNotBlank(serviceDonatemaintenance.getItemNo())){
+            wrappers.eq(ServiceDonatemaintenance::getItemNo ,serviceDonatemaintenance.getItemNo());
+        }
+        if (StringUtils.isNotBlank(serviceDonatemaintenance.getItemName())){
+            wrappers.like(ServiceDonatemaintenance::getItemName ,serviceDonatemaintenance.getItemName());
+        }
+        if (serviceDonatemaintenance.getItemTime() != null){
+            wrappers.eq(ServiceDonatemaintenance::getItemTime ,serviceDonatemaintenance.getItemTime());
+        }
+        if (StringUtils.isNotBlank(serviceDonatemaintenance.getItemDesc())){
+            wrappers.eq(ServiceDonatemaintenance::getItemDesc ,serviceDonatemaintenance.getItemDesc());
+        }
+        return this.list(wrappers);
+    }
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewinitiateServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewinitiateServiceImpl.java
index 52543f2..aa1561b 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewinitiateServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewinitiateServiceImpl.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.project.domain.ServiceDonatebaseinfoReport;
 import com.ruoyi.project.domain.ServiceEthicalreviewinitiate;
 import com.ruoyi.project.mapper.ServiceEthicalreviewinitiateMapper;
 import com.ruoyi.project.service.IServiceEthicalreviewinitiateService;
@@ -30,6 +31,11 @@
     @Override
     public List<ServiceEthicalreviewinitiate> queryList(ServiceEthicalreviewinitiate serviceEthicalreviewinitiate) {
         LambdaQueryWrapper<ServiceEthicalreviewinitiate> wrappers = Wrappers.lambdaQuery();
+        // 娣诲姞create_time涓嶄负绌虹殑鏉′欢
+        wrappers.isNotNull(ServiceEthicalreviewinitiate::getCreateTime);
+        // 鐒跺悗杩涜鍊掑簭鎺掑簭
+        wrappers.orderByDesc(ServiceEthicalreviewinitiate::getCreateTime);
+
         if (serviceEthicalreviewinitiate.getInfoid() != null) {
             wrappers.eq(ServiceEthicalreviewinitiate::getInfoid, serviceEthicalreviewinitiate.getInfoid());
         }
@@ -51,6 +57,30 @@
         if (serviceEthicalreviewinitiate.getCutOffTime() != null) {
             wrappers.eq(ServiceEthicalreviewinitiate::getCutOffTime, serviceEthicalreviewinitiate.getCutOffTime());
         }
+        if (serviceEthicalreviewinitiate.getOrderNo() != null) {
+            wrappers.eq(ServiceEthicalreviewinitiate::getOrderNo, serviceEthicalreviewinitiate.getOrderNo());
+        }
+        if (serviceEthicalreviewinitiate.getExpertConclusion() != null) {
+            wrappers.eq(ServiceEthicalreviewinitiate::getExpertConclusion, serviceEthicalreviewinitiate.getExpertConclusion());
+        }
+        if (serviceEthicalreviewinitiate.getExpertOpinion() != null) {
+            wrappers.eq(ServiceEthicalreviewinitiate::getExpertOpinion, serviceEthicalreviewinitiate.getExpertOpinion());
+        }
+        if (serviceEthicalreviewinitiate.getExpertNo() != null) {
+            wrappers.eq(ServiceEthicalreviewinitiate::getExpertNo, serviceEthicalreviewinitiate.getExpertNo());
+        }
+        if (serviceEthicalreviewinitiate.getExpertName() != null) {
+            wrappers.eq(ServiceEthicalreviewinitiate::getExpertName, serviceEthicalreviewinitiate.getExpertName());
+        }
+        if (serviceEthicalreviewinitiate.getExpertType() != null) {
+            wrappers.eq(ServiceEthicalreviewinitiate::getExpertType, serviceEthicalreviewinitiate.getExpertType());
+        }
+        if (serviceEthicalreviewinitiate.getExpertTime() != null) {
+            wrappers.eq(ServiceEthicalreviewinitiate::getExpertTime, serviceEthicalreviewinitiate.getExpertTime());
+        }
+        if (serviceEthicalreviewinitiate.getStatus() != null) {
+            wrappers.eq(ServiceEthicalreviewinitiate::getStatus, serviceEthicalreviewinitiate.getStatus());
+        }
         return this.list(wrappers);
     }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceMeetingParticipantServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceMeetingParticipantServiceImpl.java
new file mode 100644
index 0000000..80954c6
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceMeetingParticipantServiceImpl.java
@@ -0,0 +1,78 @@
+package com.ruoyi.project.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.ArrayList;
+import java.util.Map;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.project.mapper.ServiceMeetingParticipantMapper;
+import com.ruoyi.project.domain.ServiceMeetingParticipant;
+import com.ruoyi.project.service.IServiceMeetingParticipantService;
+
+/**
+ * 鍙備細浜哄憳Service涓氬姟灞傚鐞�
+ * 
+ * @author ls
+ * @date 2025-12-28
+ */
+@Service
+public class ServiceMeetingParticipantServiceImpl extends ServiceImpl<ServiceMeetingParticipantMapper, ServiceMeetingParticipant> implements IServiceMeetingParticipantService 
+{
+
+
+    /**
+     * 鏌ヨ鍙備細浜哄憳鍒楄〃
+     * 
+     * @param serviceMeetingParticipant 鍙備細浜哄憳
+     * @return 鍙備細浜哄憳
+     */
+    @Override
+    public List<ServiceMeetingParticipant> queryList(ServiceMeetingParticipant serviceMeetingParticipant) {
+        LambdaQueryWrapper<ServiceMeetingParticipant> wrappers = Wrappers.lambdaQuery();
+        if (serviceMeetingParticipant.getMeetingId() != null){
+            wrappers.eq(ServiceMeetingParticipant::getMeetingId ,serviceMeetingParticipant.getMeetingId());
+        }
+        if (StringUtils.isNotBlank(serviceMeetingParticipant.getUserNo())){
+            wrappers.eq(ServiceMeetingParticipant::getUserNo ,serviceMeetingParticipant.getUserNo());
+        }
+        if (StringUtils.isNotBlank(serviceMeetingParticipant.getUserName())){
+            wrappers.like(ServiceMeetingParticipant::getUserName ,serviceMeetingParticipant.getUserName());
+        }
+        if (StringUtils.isNotBlank(serviceMeetingParticipant.getRole())){
+            wrappers.eq(ServiceMeetingParticipant::getRole ,serviceMeetingParticipant.getRole());
+        }
+        if (serviceMeetingParticipant.getAttendanceStatus() != null){
+            wrappers.eq(ServiceMeetingParticipant::getAttendanceStatus ,serviceMeetingParticipant.getAttendanceStatus());
+        }
+        if (serviceMeetingParticipant.getIsRequired() != null){
+            wrappers.eq(ServiceMeetingParticipant::getIsRequired ,serviceMeetingParticipant.getIsRequired());
+        }
+        if (serviceMeetingParticipant.getConfirmationTime() != null){
+            wrappers.eq(ServiceMeetingParticipant::getConfirmationTime ,serviceMeetingParticipant.getConfirmationTime());
+        }
+        if (serviceMeetingParticipant.getCheckInTime() != null){
+            wrappers.eq(ServiceMeetingParticipant::getCheckInTime ,serviceMeetingParticipant.getCheckInTime());
+        }
+        if (serviceMeetingParticipant.getCheckOutTime() != null){
+            wrappers.eq(ServiceMeetingParticipant::getCheckOutTime ,serviceMeetingParticipant.getCheckOutTime());
+        }
+        if (StringUtils.isNotBlank(serviceMeetingParticipant.getCreatedBy())){
+            wrappers.eq(ServiceMeetingParticipant::getCreatedBy ,serviceMeetingParticipant.getCreatedBy());
+        }
+        if (serviceMeetingParticipant.getCreatedTime() != null){
+            wrappers.eq(ServiceMeetingParticipant::getCreatedTime ,serviceMeetingParticipant.getCreatedTime());
+        }
+        if (StringUtils.isNotBlank(serviceMeetingParticipant.getUpdatedBy())){
+            wrappers.eq(ServiceMeetingParticipant::getUpdatedBy ,serviceMeetingParticipant.getUpdatedBy());
+        }
+        if (serviceMeetingParticipant.getUpdatedTime() != null){
+            wrappers.eq(ServiceMeetingParticipant::getUpdatedTime ,serviceMeetingParticipant.getUpdatedTime());
+        }
+        return this.list(wrappers);
+    }
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceMeetingServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceMeetingServiceImpl.java
new file mode 100644
index 0000000..6513d0b
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceMeetingServiceImpl.java
@@ -0,0 +1,117 @@
+package com.ruoyi.project.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.ArrayList;
+import java.util.Map;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.project.mapper.ServiceMeetingMapper;
+import com.ruoyi.project.domain.ServiceMeeting;
+import com.ruoyi.project.service.IServiceMeetingService;
+
+/**
+ * 浼氳绾Service涓氬姟灞傚鐞�
+ * 
+ * @author ls
+ * @date 2025-12-28
+ */
+@Service
+public class ServiceMeetingServiceImpl extends ServiceImpl<ServiceMeetingMapper, ServiceMeeting> implements IServiceMeetingService 
+{
+
+
+    /**
+     * 鏌ヨ浼氳绾鍒楄〃
+     * 
+     * @param serviceMeeting 浼氳绾
+     * @return 浼氳绾
+     */
+    @Override
+    public List<ServiceMeeting> queryList(ServiceMeeting serviceMeeting) {
+        LambdaQueryWrapper<ServiceMeeting> wrappers = Wrappers.lambdaQuery();
+        if (StringUtils.isNotBlank(serviceMeeting.getMeetingNumber())){
+            wrappers.eq(ServiceMeeting::getMeetingNumber ,serviceMeeting.getMeetingNumber());
+        }
+        if (StringUtils.isNotBlank(serviceMeeting.getTitle())){
+            wrappers.eq(ServiceMeeting::getTitle ,serviceMeeting.getTitle());
+        }
+        if (serviceMeeting.getTypeId() != null){
+            wrappers.eq(ServiceMeeting::getTypeId ,serviceMeeting.getTypeId());
+        }
+        if (serviceMeeting.getLocationId() != null){
+            wrappers.eq(ServiceMeeting::getLocationId ,serviceMeeting.getLocationId());
+        }
+        if (serviceMeeting.getOrganizerId() != null){
+            wrappers.eq(ServiceMeeting::getOrganizerId ,serviceMeeting.getOrganizerId());
+        }
+        if (serviceMeeting.getStartTime() != null){
+            wrappers.eq(ServiceMeeting::getStartTime ,serviceMeeting.getStartTime());
+        }
+        if (serviceMeeting.getEndTime() != null){
+            wrappers.eq(ServiceMeeting::getEndTime ,serviceMeeting.getEndTime());
+        }
+        if (StringUtils.isNotBlank(serviceMeeting.getSummary())){
+            wrappers.eq(ServiceMeeting::getSummary ,serviceMeeting.getSummary());
+        }
+        if (StringUtils.isNotBlank(serviceMeeting.getContent())){
+            wrappers.eq(ServiceMeeting::getContent ,serviceMeeting.getContent());
+        }
+        if (StringUtils.isNotBlank(serviceMeeting.getAttachment())){
+            wrappers.eq(ServiceMeeting::getAttachment ,serviceMeeting.getAttachment());
+        }
+        if (serviceMeeting.getStatus() != null){
+            wrappers.eq(ServiceMeeting::getStatus ,serviceMeeting.getStatus());
+        }
+        if (serviceMeeting.getIsRecurring() != null){
+            wrappers.eq(ServiceMeeting::getIsRecurring ,serviceMeeting.getIsRecurring());
+        }
+        if (StringUtils.isNotBlank(serviceMeeting.getRecurringPattern())){
+            wrappers.eq(ServiceMeeting::getRecurringPattern ,serviceMeeting.getRecurringPattern());
+        }
+        if (serviceMeeting.getParentMeetingId() != null){
+            wrappers.eq(ServiceMeeting::getParentMeetingId ,serviceMeeting.getParentMeetingId());
+        }
+        if (serviceMeeting.getReminderMinutes() != null){
+            wrappers.eq(ServiceMeeting::getReminderMinutes ,serviceMeeting.getReminderMinutes());
+        }
+        if (StringUtils.isNotBlank(serviceMeeting.getRecordcontent())){
+            wrappers.eq(ServiceMeeting::getRecordcontent ,serviceMeeting.getRecordcontent());
+        }
+        if (StringUtils.isNotBlank(serviceMeeting.getRecordattachment())){
+            wrappers.eq(ServiceMeeting::getRecordattachment ,serviceMeeting.getRecordattachment());
+        }
+        if (StringUtils.isNotBlank(serviceMeeting.getRecorderBy())){
+            wrappers.eq(ServiceMeeting::getRecorderBy ,serviceMeeting.getRecorderBy());
+        }
+        if (serviceMeeting.getRecorderTime() != null){
+            wrappers.eq(ServiceMeeting::getRecorderTime ,serviceMeeting.getRecorderTime());
+        }
+        if (StringUtils.isNotBlank(serviceMeeting.getApproverBy())){
+            wrappers.eq(ServiceMeeting::getApproverBy ,serviceMeeting.getApproverBy());
+        }
+        if (serviceMeeting.getApprovalStatus() != null){
+            wrappers.eq(ServiceMeeting::getApprovalStatus ,serviceMeeting.getApprovalStatus());
+        }
+        if (serviceMeeting.getApprovalTime() != null){
+            wrappers.eq(ServiceMeeting::getApprovalTime ,serviceMeeting.getApprovalTime());
+        }
+        if (StringUtils.isNotBlank(serviceMeeting.getCreatedBy())){
+            wrappers.eq(ServiceMeeting::getCreatedBy ,serviceMeeting.getCreatedBy());
+        }
+        if (serviceMeeting.getCreatedTime() != null){
+            wrappers.eq(ServiceMeeting::getCreatedTime ,serviceMeeting.getCreatedTime());
+        }
+        if (StringUtils.isNotBlank(serviceMeeting.getUpdatedBy())){
+            wrappers.eq(ServiceMeeting::getUpdatedBy ,serviceMeeting.getUpdatedBy());
+        }
+        if (serviceMeeting.getUpdatedTime() != null){
+            wrappers.eq(ServiceMeeting::getUpdatedTime ,serviceMeeting.getUpdatedTime());
+        }
+        return this.list(wrappers);
+    }
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTrainingRecordsServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTrainingRecordsServiceImpl.java
new file mode 100644
index 0000000..fabced2
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTrainingRecordsServiceImpl.java
@@ -0,0 +1,109 @@
+package com.ruoyi.project.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.ArrayList;
+import java.util.Map;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.project.mapper.ServiceTrainingRecordsMapper;
+import com.ruoyi.project.domain.ServiceTrainingRecords;
+import com.ruoyi.project.service.IServiceTrainingRecordsService;
+
+/**
+ * 浜哄憳杩涗慨绠$悊Service涓氬姟灞傚鐞�
+ * 
+ * @author ls
+ * @date 2025-12-28
+ */
+@Service
+public class ServiceTrainingRecordsServiceImpl extends ServiceImpl<ServiceTrainingRecordsMapper, ServiceTrainingRecords> implements IServiceTrainingRecordsService 
+{
+
+
+    /**
+     * 鏌ヨ浜哄憳杩涗慨绠$悊鍒楄〃
+     * 
+     * @param serviceTrainingRecords 浜哄憳杩涗慨绠$悊
+     * @return 浜哄憳杩涗慨绠$悊
+     */
+    @Override
+    public List<ServiceTrainingRecords> queryList(ServiceTrainingRecords serviceTrainingRecords) {
+        LambdaQueryWrapper<ServiceTrainingRecords> wrappers = Wrappers.lambdaQuery();
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getName())){
+            wrappers.like(ServiceTrainingRecords::getName ,serviceTrainingRecords.getName());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getSex())){
+            wrappers.eq(ServiceTrainingRecords::getSex ,serviceTrainingRecords.getSex());
+        }
+        if (serviceTrainingRecords.getAge() != null){
+            wrappers.eq(ServiceTrainingRecords::getAge ,serviceTrainingRecords.getAge());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getEducation())){
+            wrappers.eq(ServiceTrainingRecords::getEducation ,serviceTrainingRecords.getEducation());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getTrainingType())){
+            wrappers.eq(ServiceTrainingRecords::getTrainingType ,serviceTrainingRecords.getTrainingType());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getIdCard())){
+            wrappers.eq(ServiceTrainingRecords::getIdCard ,serviceTrainingRecords.getIdCard());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getGraduationSchool())){
+            wrappers.eq(ServiceTrainingRecords::getGraduationSchool ,serviceTrainingRecords.getGraduationSchool());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getWorkUnit())){
+            wrappers.eq(ServiceTrainingRecords::getWorkUnit ,serviceTrainingRecords.getWorkUnit());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getTechnicalTitle())){
+            wrappers.eq(ServiceTrainingRecords::getTechnicalTitle ,serviceTrainingRecords.getTechnicalTitle());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getProfession())){
+            wrappers.eq(ServiceTrainingRecords::getProfession ,serviceTrainingRecords.getProfession());
+        }
+        if (serviceTrainingRecords.getWorkYears() != null){
+            wrappers.eq(ServiceTrainingRecords::getWorkYears ,serviceTrainingRecords.getWorkYears());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getTrainingGoal())){
+            wrappers.eq(ServiceTrainingRecords::getTrainingGoal ,serviceTrainingRecords.getTrainingGoal());
+        }
+        if (serviceTrainingRecords.getTrainingStartDate() != null){
+            wrappers.eq(ServiceTrainingRecords::getTrainingStartDate ,serviceTrainingRecords.getTrainingStartDate());
+        }
+        if (serviceTrainingRecords.getTrainingEndDate() != null){
+            wrappers.eq(ServiceTrainingRecords::getTrainingEndDate ,serviceTrainingRecords.getTrainingEndDate());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getTrainingMajor())){
+            wrappers.eq(ServiceTrainingRecords::getTrainingMajor ,serviceTrainingRecords.getTrainingMajor());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getWorkSituation())){
+            wrappers.eq(ServiceTrainingRecords::getWorkSituation ,serviceTrainingRecords.getWorkSituation());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getApplySubject())){
+            wrappers.eq(ServiceTrainingRecords::getApplySubject ,serviceTrainingRecords.getApplySubject());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getApplyPurpose())){
+            wrappers.eq(ServiceTrainingRecords::getApplyPurpose ,serviceTrainingRecords.getApplyPurpose());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getMainEducation())){
+            wrappers.eq(ServiceTrainingRecords::getMainEducation ,serviceTrainingRecords.getMainEducation());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getMainExperience())){
+            wrappers.eq(ServiceTrainingRecords::getMainExperience ,serviceTrainingRecords.getMainExperience());
+        }
+        if (StringUtils.isNotBlank(serviceTrainingRecords.getRecordStatus())){
+            wrappers.eq(ServiceTrainingRecords::getRecordStatus ,serviceTrainingRecords.getRecordStatus());
+        }
+        if (serviceTrainingRecords.getIsCopy() != null){
+            wrappers.eq(ServiceTrainingRecords::getIsCopy ,serviceTrainingRecords.getIsCopy());
+        }
+        if (serviceTrainingRecords.getOriginalId() != null){
+            wrappers.eq(ServiceTrainingRecords::getOriginalId ,serviceTrainingRecords.getOriginalId());
+        }
+        return this.list(wrappers);
+    }
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTransportServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTransportServiceImpl.java
index e6268d1..c666474 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTransportServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTransportServiceImpl.java
@@ -6,10 +6,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.project.domain.ServiceDonatebaseinfoReport;
-import com.ruoyi.project.domain.ServiceDonatebaseinfoReportFile;
-import com.ruoyi.project.domain.ServiceTransport;
-import com.ruoyi.project.domain.ServiceTransportFile;
+import com.ruoyi.project.domain.*;
 import com.ruoyi.project.mapper.ServiceTransportMapper;
 import com.ruoyi.project.service.IServiceTransportFileService;
 import com.ruoyi.project.service.IServiceTransportService;
@@ -43,6 +40,10 @@
     @Override
     public Page<ServiceTransport> queryList(ServiceTransport serviceTransport) {
         LambdaQueryWrapper<ServiceTransport> wrappers = getWrappers(serviceTransport);
+        // 娣诲姞create_time涓嶄负绌虹殑鏉′欢
+        wrappers.isNotNull(ServiceTransport::getCreateTime);
+        // 鐒跺悗杩涜鍊掑簭鎺掑簭
+        wrappers.orderByDesc(ServiceTransport::getCreateTime);
         // 鍒涘缓鍒嗛〉瀵硅薄锛岃缃〉鐮佸拰姣忛〉澶у皬
         int currentPage = (serviceTransport.getPageNum() == null || serviceTransport.getPageNum() < 1) ? 1 : serviceTransport.getPageNum();
         int size = (serviceTransport.getPageSize() == null || serviceTransport.getPageSize() < 1) ? 10 : serviceTransport.getPageSize();
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/VUserOrgServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/VUserOrgServiceImpl.java
new file mode 100644
index 0000000..6d01a6f
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/VUserOrgServiceImpl.java
@@ -0,0 +1,72 @@
+package com.ruoyi.project.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.project.domain.VUserOrg;
+import com.ruoyi.project.mapper.VUserOrgMapper;
+import com.ruoyi.project.service.IVUserOrgService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * VIEWService涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2025-12-27
+ */
+@Service
+public class VUserOrgServiceImpl extends ServiceImpl<VUserOrgMapper, VUserOrg> implements IVUserOrgService {
+
+
+    /**
+     * 鏌ヨVIEW鍒楄〃
+     *
+     * @param vUserOrg VIEW
+     * @return VIEW
+     */
+    @Override
+    public List<VUserOrg> queryList(VUserOrg vUserOrg) {
+        LambdaQueryWrapper<VUserOrg> wrappers = Wrappers.lambdaQuery();
+        if (vUserOrg.getUserId() != null) {
+            wrappers.eq(VUserOrg::getUserId, vUserOrg.getUserId());
+        }
+        if (StringUtils.isNotBlank(vUserOrg.getStatus())) {
+            wrappers.eq(VUserOrg::getStatus, vUserOrg.getStatus());
+        }
+        if (StringUtils.isNotBlank(vUserOrg.getUserName())) {
+            wrappers.like(VUserOrg::getUserName, vUserOrg.getUserName());
+        }
+        if (StringUtils.isNotBlank(vUserOrg.getNickName())) {
+            wrappers.like(VUserOrg::getNickName, vUserOrg.getNickName());
+        }
+        if (StringUtils.isNotBlank(vUserOrg.getUserType())) {
+            wrappers.eq(VUserOrg::getUserType, vUserOrg.getUserType());
+        }
+        if (StringUtils.isNotBlank(vUserOrg.getPhonenumber())) {
+            wrappers.eq(VUserOrg::getPhonenumber, vUserOrg.getPhonenumber());
+        }
+        if (vUserOrg.getDeptId() != null) {
+            wrappers.eq(VUserOrg::getDeptId, vUserOrg.getDeptId());
+        }
+        if (vUserOrg.getOrgId() != null) {
+            wrappers.eq(VUserOrg::getOrgId, vUserOrg.getOrgId());
+        }
+        if (StringUtils.isNotBlank(vUserOrg.getOrganizationid())) {
+            wrappers.eq(VUserOrg::getOrganizationid, vUserOrg.getOrganizationid());
+        }
+        if (StringUtils.isNotBlank(vUserOrg.getOrganizationname())) {
+            wrappers.like(VUserOrg::getOrganizationname, vUserOrg.getOrganizationname());
+        }
+        if (StringUtils.isNotBlank(vUserOrg.getCoordinatorNo())) {
+            wrappers.eq(VUserOrg::getCoordinatorNo, vUserOrg.getCoordinatorNo());
+        }
+        if (StringUtils.isNotBlank(vUserOrg.getCoordinatorName())) {
+            wrappers.like(VUserOrg::getCoordinatorName, vUserOrg.getCoordinatorName());
+        }
+        return this.list(wrappers);
+    }
+
+}
diff --git a/ruoyi-project/src/main/resources/mapper/project/BaseOrganizationMapper.xml b/ruoyi-project/src/main/resources/mapper/project/BaseOrganizationMapper.xml
index e162041..567fc02 100644
--- a/ruoyi-project/src/main/resources/mapper/project/BaseOrganizationMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/BaseOrganizationMapper.xml
@@ -35,11 +35,19 @@
         <result property="communityname" column="CommunityName"/>
         <result property="countycode" column="CountyCode"/>
         <result property="countyname" column="CountyName"/>
+        <result property="reporterName" column="reporter_name"/>
+        <result property="reporterNo" column="reporter_no"/>
+        <result property="coordinatorName" column="coordinator_name"/>
+        <result property="coordinatorNo" column="coordinator_no"/>
     </resultMap>
 
     <sql id="selectBaseOrganizationVo">
         select ID,
                OrganizationName,
+               reporter_name,
+               reporter_no,
+               coordinator_name,
+               coordinator_no,
                OrganizationID,
                LogoUrl,
                RegisterTime,
@@ -104,6 +112,10 @@
                 #{communityname}, '%')
             </if>
             <if test="countycode != null  and countycode != ''">and CountyCode = #{countycode}</if>
+            <if test="reporterName != null  and reporterName != ''">and reporter_name = #{reporterName}</if>
+            <if test="reporterNo != null  and reporterNo != ''">and reporter_no = #{reporterNo}</if>
+            <if test="coordinatorName != null  and coordinatorName != ''">and coordinator_name = #{coordinatorName}</if>
+            <if test="coordinatorNo != null  and coordinatorNo != ''">and coordinatorNo = #{coordinatorNo}</if>
             <if test="countyname != null  and countyname != ''">and CountyName like concat('%', #{countyname}, '%')</if>
         </where>
     </select>
@@ -142,4 +154,4 @@
 
     </select>
 
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoMapper.xml
index aee2e13..ad612dc 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoMapper.xml
@@ -61,7 +61,7 @@
         <result property="reportername" column="ReporterName"/>
         <result property="reporterphone" column="ReporterPhone"/>
         <result property="reporttime" column="ReportTime"/>
-        <result property="del_flag" column="del_flag"/>
+        <result property="delFlag" column="del_flag"/>
         <result property="createBy" column="create_by"/>
         <result property="createTime" column="create_time"/>
         <result property="terminationCase" column="termination_case"/>
@@ -71,7 +71,8 @@
         <result property="occupation" column="Occupation"/>
         <result property="education" column="Education"/>
         <result property="nativeplace" column="NativePlace"/>
-        <result property="infoname" column="infoName"/>
+        <result property="infoName" column="info_name"/>
+        <result property="infoNo" column="info_no"/>
         <result property="infophone" column="infoPhone"/>
         <result property="deptid" column="deptid"/>
         <result property="deptname" column="deptname"/>
@@ -87,6 +88,9 @@
         <result property="currentDept" column="current_dept"/>
         <result property="firstDept" column="first_dept"/>
         <result property="reportId" column="report_id"/>
+        <result property="gcsScore" column="gcs_score"/>
+        <result property="coordinatorNo" column="coordinator_no"/>
+        <result property="coordinatorName" column="coordinator_name"/>
     </resultMap>
 
     <sql id="selectServiceDonatebaseinfoVo">
@@ -108,6 +112,8 @@
             service_donatebaseinfo.del_flag = 0
             <if test="name != null  and name != ''">and Name like concat('%', #{name}, '%')</if>
             <if test="sex != null ">and Sex = #{sex}</if>
+            <if test="coordinatorName != null ">and coordinator_name like concat('%',#{coordinatorName}, '%')</if>
+            <if test="coordinatorNo != null ">and coordinator_no = #{coordinatorNo}</if>
             <if test="caseNo != null ">and service_donatebaseinfo.case_no = #{caseNo}</if>
             <if test="idcardtype != null ">and IDCardType = #{idcardtype}</if>
             <if test="idcardno != null  and idcardno != ''">and IDCardNo = #{idcardno}</if>
@@ -210,7 +216,8 @@
             </if>
             <if test="reporterphone != null  and reporterphone != ''">and ReporterPhone = #{reporterphone}</if>
             <if test="reporttime != null ">and ReportTime = #{reporttime}</if>
-            <if test="infoname != null ">and infoName = #{infoname}</if>
+            <if test="infoName != null ">and info_name like concat('%',#{infoName},'%')</if>
+            <if test="infoNo != null ">and info_no = #{infoNo}</if>
             <if test="infophone != null ">and infoPhone = #{infophone}</if>
             <if test="createBy != null ">and `service_donatebaseinfo`.create_by = #{createBy}</if>
             <if test="starttime != null ">and donatetime >= #{starttime}</if>
@@ -226,6 +233,7 @@
             <if test="donateno != null ">and donateno = #{donateno}</if>
             <if test="workflow != null ">and workflow = #{workflow}</if>
             <if test="reportId != null ">and report_id = #{reportId}</if>
+            <if test="gcsScore != null ">and gcs_score = #{gcsScore}</if>
         </where>
 
         order by ReportTime desc
@@ -253,6 +261,7 @@
             <if test="caseNo != null ">and b.case_no >= #{caseNo}</if>
             <if test="reportId != null ">and b.report_id = #{reportId}</if>
             <if test="endtime != null ">and b.donatetime &lt;= #{endtime}</if>
+            <if test="gcsScore != null ">and b.gcs_score = #{gcsScore}</if>
             <if test="city != null and city != ''">and o.City = #{city}</if>
             <if test="reporterno != null and reporterno != ''">and b.ReporterNo = #{reporterno}</if>
         </where>
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoReportMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoReportMapper.xml
index 6c29c1e..3b10545 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoReportMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoReportMapper.xml
@@ -43,8 +43,6 @@
         <result property="infectious" column="Infectious"/>
         <result property="infectiousOther" column="Infectious_Other"/>
         <result property="patientstate" column="PatientState"/>
-        <result property="reporterno" column="ReporterNo"/>
-        <result property="reportername" column="ReporterName"/>
         <result property="reporterphone" column="ReporterPhone"/>
         <result property="reporttime" column="ReportTime"/>
         <result property="delFlag" column="del_flag"/>
@@ -58,14 +56,26 @@
         <result property="deptName" column="dept_name"/>
         <result property="deptNo" column="dept_no"/>
         <result property="isTransport" column="is_transport"/>
-        <result property="gscScore" column="gsc_score"/>
+        <result property="gcsScore" column="gcs_score"/>
+        <result property="rhYin" column="rh_yin"/>
+        <result property="bloodType" column="blood_type"/>
+        <result property="coordinatorName" column="coordinator_name"/>
+        <result property="coordinatorNo" column="coordinator_no"/>
+        <result property="infoName" column="info_name"/>
+        <result property="infoNo" column="info_no"/>
     </resultMap>
 
     <sql id="selectServiceDonatebaseinfoReportVo">
         select ID,
                case_no,
+               coordinator_name,
+               coordinator_no,
+               info_name,
+               info_no,
+               blood_type,
+               rh_yin,
                report_status,
-               gsc_score,
+               gcs_score,
                Name,
                Sex,
                IDCardType,
@@ -101,8 +111,6 @@
                Infectious,
                Infectious_Other,
                PatientState,
-               ReporterNo,
-               ReporterName,
                ReporterPhone,
                ReportTime,
                del_flag,
@@ -125,7 +133,11 @@
         <include refid="selectServiceDonatebaseinfoReportVo"/>
         <where>
             <if test="caseNo != null  and caseNo != ''">and case_no = #{caseNo}</if>
-            <if test="gscScore != null  and gscScore != ''">and gsc_score = #{gscScore}</if>
+            <if test="coordinatorName != null ">and coordinator_name like concat('%', #{coordinatorName}, '%')</if>
+            <if test="coordinatorNo != null ">and coordinator_no = #{coordinatorNo}</if>
+             <if test="infoName != null ">and info_name like concat('%', #{infoName}, '%')</if>
+            <if test="infoNo != null ">and info_no = #{infoNo}</if>
+            <if test="gcsScore != null  and gcsScore != ''">and gcs_score = #{gcsScore}</if>
             <if test="reportStatus != null  and reportStatus != ''">and report_status = #{reportStatus}</if>
             <if test="name != null  and name != ''">and Name like concat('%', #{name}, '%')</if>
             <if test="sex != null  and sex != ''">and Sex = #{sex}</if>
@@ -192,10 +204,6 @@
             <if test="infectious != null  and infectious != ''">and Infectious = #{infectious}</if>
             <if test="infectiousOther != null  and infectiousOther != ''">and Infectious_Other = #{infectiousOther}</if>
             <if test="patientstate != null  and patientstate != ''">and PatientState = #{patientstate}</if>
-            <if test="reporterno != null  and reporterno != ''">and ReporterNo = #{reporterno}</if>
-            <if test="reportername != null  and reportername != ''">and ReporterName like concat('%', #{reportername},
-                '%')
-            </if>
             <if test="reporterphone != null  and reporterphone != ''">and ReporterPhone = #{reporterphone}</if>
             <if test="reporttime != null ">and ReportTime = #{reporttime}</if>
             <if test="terminationCase != null ">and termination_case = #{terminationCase}</if>
@@ -204,6 +212,8 @@
             <if test="deptNo != null  and deptNo != ''">and dept_no = #{deptNo}</if>
             <if test="deptName != null  and deptName != ''">and dept_name = #{deptName}</if>
             <if test="isTransport != null  and isTransport != ''">and is_transport = #{isTransport}</if>
+            <if test="rhYin != null  and rhYin != ''">and rh_yin = #{rhYin}</if>
+            <if test="bloodType != null  and bloodType != ''">and blood_type = #{bloodType}</if>
         </where>
     </select>
 
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceDonatemaintenanceMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceDonatemaintenanceMapper.xml
new file mode 100644
index 0000000..d5c2d00
--- /dev/null
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceDonatemaintenanceMapper.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.mapper.ServiceDonatemaintenanceMapper">
+
+    <resultMap type="com.ruoyi.project.domain.ServiceDonatemaintenance" id="ServiceDonatemaintenanceResult">
+        <result property="id" column="ID"/>
+        <result property="infoid" column="InfoID"/>
+        <result property="caseNo" column="case_no"/>
+        <result property="donorno" column="DonorNo"/>
+        <result property="itemNo" column="item_no"/>
+        <result property="itemName" column="item_name"/>
+        <result property="itemTime" column="item_time"/>
+        <result property="itemDesc" column="item_desc"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <sql id="selectServiceDonatemaintenanceVo">
+        select ID,
+               InfoID,
+               case_no,
+               DonorNo,
+               item_no,
+               item_name,
+               item_time,
+               item_desc,
+               del_flag,
+               create_by,
+               create_time,
+               update_by,
+               update_time
+        from service_donatemaintenance
+    </sql>
+
+    <select id="selectServiceDonatemaintenanceList" parameterType="com.ruoyi.project.domain.ServiceDonatemaintenance"
+            resultMap="ServiceDonatemaintenanceResult">
+        <include refid="selectServiceDonatemaintenanceVo"/>
+        <where>
+            <if test="infoid != null ">and InfoID = #{infoid}</if>
+            <if test="caseNo != null  and caseNo != ''">and case_no = #{caseNo}</if>
+            <if test="donorno != null  and donorno != ''">and DonorNo = #{donorno}</if>
+            <if test="itemNo != null  and itemNo != ''">and item_no = #{itemNo}</if>
+            <if test="itemName != null  and itemName != ''">and item_name like concat('%', #{itemName}, '%')</if>
+            <if test="itemTime != null ">and item_time = #{itemTime}</if>
+            <if test="itemDesc != null  and itemDesc != ''">and item_desc = #{itemDesc}</if>
+        </where>
+    </select>
+
+</mapper>
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml
index 3d94602..e4be9fc 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml
@@ -19,12 +19,28 @@
         <result property="updateBy" column="update_by"/>
         <result property="updateTime" column="update_time"/>
         <result property="remark" column="remark"/>
+        <result property="orderNo" column="order_no"/>
+        <result property="expertConclusion" column="expert_conclusion"/>
+        <result property="expertName" column="expert_name"/>
+        <result property="expertNo" column="expert_no"/>
+        <result property="expertOpinion" column="expert_opinion"/>
+        <result property="expertTime" column="expert_time"/>
+        <result property="expertType" column="expert_type"/>
+        <result property="status" column="status"/>
     </resultMap>
 
     <sql id="selectServiceEthicalreviewinitiateVo">
         select ID,
                InfoID,
                case_no,
+               order_no,
+               expert_conclusion,
+               expert_name,
+               expert_no,
+               expert_opinion,
+               expert_time,
+               expert_type,
+               status,
                initiate_person,
                start_time,
                end_time,
@@ -51,6 +67,15 @@
             <if test="endTime != null ">and end_time = #{endTime}</if>
             <if test="initiateTheme != null  and initiateTheme != ''">and initiate_theme = #{initiateTheme}</if>
             <if test="cutOffTime != null ">and cut_off_time = #{cutOffTime}</if>
+            <if test="expertConclusion != null ">and expert_conclusion = #{expertConclusion}</if>
+            <if test="orderNo != null ">and order_no = #{orderNo}</if>
+            <if test="expertName != null ">and expert_name = #{expertName}</if>
+            <if test="expertOpinion != null ">and expert_opinion = #{expertOpinion}</if>
+            <if test="expertTime != null ">and expert_time = #{expertTime}</if>
+            <if test="expertType != null ">and expert_type = #{expertType}</if>
+            <if test="status != null ">and status = #{status}</if>
+            <if test="expertNo != null ">and expert_no = #{expertNo}</if>
+
         </where>
     </select>
 
diff --git a/ruoyi-project/src/main/resources/mapper/project/VUserOrgMapper.xml b/ruoyi-project/src/main/resources/mapper/project/VUserOrgMapper.xml
new file mode 100644
index 0000000..d073878
--- /dev/null
+++ b/ruoyi-project/src/main/resources/mapper/project/VUserOrgMapper.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.mapper.VUserOrgMapper">
+
+    <resultMap type="com.ruoyi.project.domain.VUserOrg" id="VUserOrgResult">
+        <result property="userId" column="user_id"/>
+        <result property="status" column="status"/>
+        <result property="userName" column="user_name"/>
+        <result property="nickName" column="nick_name"/>
+        <result property="userType" column="user_type"/>
+        <result property="phonenumber" column="phonenumber"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="orgId" column="org_id"/>
+        <result property="organizationid" column="OrganizationID"/>
+        <result property="organizationname" column="OrganizationName"/>
+        <result property="coordinatorNo" column="coordinator_no"/>
+        <result property="coordinatorName" column="coordinator_name"/>
+    </resultMap>
+
+    <sql id="selectVUserOrgVo">
+        select user_id,
+               status,
+               user_name,
+               nick_name,
+               user_type,
+               phonenumber,
+               dept_id,
+               org_id,
+               OrganizationID,
+               OrganizationName,
+               coordinator_no,
+               coordinator_name
+        from v_user_org
+    </sql>
+
+    <select id="selectVUserOrgList" parameterType="com.ruoyi.project.domain.VUserOrg" resultMap="VUserOrgResult">
+        <include refid="selectVUserOrgVo"/>
+        <where>
+            <if test="userId != null ">and user_id = #{userId}</if>
+            <if test="status != null  and status != ''">and status = #{status}</if>
+            <if test="userName != null  and userName != ''">and user_name like concat('%', #{userName}, '%')</if>
+            <if test="nickName != null  and nickName != ''">and nick_name like concat('%', #{nickName}, '%')</if>
+            <if test="userType != null  and userType != ''">and user_type = #{userType}</if>
+            <if test="phonenumber != null  and phonenumber != ''">and phonenumber = #{phonenumber}</if>
+            <if test="deptId != null ">and dept_id = #{deptId}</if>
+            <if test="orgId != null ">and org_id = #{orgId}</if>
+            <if test="organizationid != null  and organizationid != ''">and OrganizationID = #{organizationid}</if>
+            <if test="organizationname != null  and organizationname != ''">and OrganizationName like concat('%',
+                #{organizationname}, '%')
+            </if>
+            <if test="coordinatorNo != null  and coordinatorNo != ''">and coordinator_no = #{coordinatorNo}</if>
+            <if test="coordinatorName != null  and coordinatorName != ''">and coordinator_name like concat('%',
+                #{coordinatorName}, '%')
+            </if>
+        </where>
+    </select>
+
+</mapper>

--
Gitblit v1.9.3