From 77a409bdbaa1ed9f8ac7829f6ffbb7521e61f854 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期六, 12 四月 2025 16:21:42 +0800
Subject: [PATCH] 课题方案,实验调度管理

---
 ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterOtherTask.java                      |    3 
 ruoyi-system/src/main/resources/mapper/system/TExperimentDispatchMapper.xml                  |   24 +
 ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchParticipants.java       |   10 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentSchemePerson.java               |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TClinicalTrialPoints.java                  |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TTestMethodConfirmSheet.java               |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectApprovalReport.java                |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/query/TExperimentDispatchQuery.java              |   20 +
 ruoyi-system/src/main/java/com/ruoyi/system/dto/TProjectProposalDTO.java                     |   15 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentDispatchService.java          |    9 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentResultReport.java               |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentDispatchController.java    |  194 ++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterWorkEvaluate.java                   |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectTeamController.java           |   14 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/AuditStatusDTO.java                          |   22 +
 ruoyi-system/src/main/resources/mapper/system/TProjectProposalMapper.xml                     |   30 ++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatch.java                   |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TSamplingRecordOperation.java              |   11 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/TProjectProposalVO.java                       |   15 +
 ruoyi-system/src/main/java/com/ruoyi/system/query/TProjectProposalQuery.java                 |   22 +
 ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItemReport.java                     |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TQaProduceReport.java                      |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TQaReportFile.java                         |    2 
 ruoyi-system/src/main/resources/mapper/system/TProjectTeamMapper.xml                         |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentDispatchMapper.java            |   13 +
 ruoyi-system/src/main/java/com/ruoyi/system/model/TChemistWorkEvaluate.java                  |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TProjectProposalMapper.java               |   13 +
 ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchTask.java               |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectProposal.java                      |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItem.java                           |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/TExperimentDispatchDTO.java                  |   24 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectProposalController.java       |  150 +++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/TExperimentDispatchVO.java                    |   29 ++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityStudyReport.java               |    7 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentScheme.java                     |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityReportFile.java                |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/TProjectProposalService.java             |    9 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TProjectProposalServiceImpl.java    |   17 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentDispatchServiceImpl.java |   46 +++
 39 files changed, 730 insertions(+), 31 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentDispatchController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentDispatchController.java
index 5268c91..ca78f58 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentDispatchController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentDispatchController.java
@@ -1,9 +1,37 @@
 package com.ruoyi.web.controller.api;
 
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.dto.AuditStatusDTO;
+import com.ruoyi.system.dto.TExperimentDispatchDTO;
+import com.ruoyi.system.dto.UpAndDownDTO;
+import com.ruoyi.system.mapper.SysUserMapper;
+import com.ruoyi.system.model.TExperimentDispatch;
+import com.ruoyi.system.model.TExperimentDispatchGroup;
+import com.ruoyi.system.model.TExperimentDispatchParticipants;
+import com.ruoyi.system.model.TExperimentDispatchTask;
+import com.ruoyi.system.query.TExperimentDispatchQuery;
+import com.ruoyi.system.service.*;
+import com.ruoyi.system.vo.TExperimentDispatchVO;
 import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -18,5 +46,167 @@
 @RequestMapping("/t-experiment-dispatch")
 public class TExperimentDispatchController {
 
+    private final TExperimentDispatchService experimentDispatchService;
+    private final TokenService tokenService;
+    private final ISysUserService sysUserService;
+    private final SysUserMapper sysUserMapper;
+    private final TExperimentDispatchGroupService experimentDispatchGroupService;
+    private final TExperimentDispatchParticipantsService experimentDispatchParticipantsService;
+    private final TExperimentDispatchTaskService experimentDispatchTaskService;
+    @Autowired
+    public TExperimentDispatchController(TExperimentDispatchService experimentDispatchService, TokenService tokenService, ISysUserService sysUserService, SysUserMapper sysUserMapper, TExperimentDispatchGroupService experimentDispatchGroupService, TExperimentDispatchParticipantsService experimentDispatchParticipantsService, TExperimentDispatchTaskService experimentDispatchTaskService) {
+        this.experimentDispatchService = experimentDispatchService;
+        this.tokenService = tokenService;
+        this.sysUserService = sysUserService;
+        this.sysUserMapper = sysUserMapper;
+        this.experimentDispatchGroupService = experimentDispatchGroupService;
+        this.experimentDispatchParticipantsService = experimentDispatchParticipantsService;
+        this.experimentDispatchTaskService = experimentDispatchTaskService;
+    }
+
+    /**
+     * 获取实验调度管理列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:experimentDispatch:list')")
+    @ApiOperation(value = "获取实验调度分页列表")
+    @PostMapping(value = "/api/t-experiment-dispatch/pageList")
+    public R<PageInfo<TExperimentDispatchVO>> pageList(@RequestBody String param) {
+        TExperimentDispatchQuery query = JSON.parseObject(param, TExperimentDispatchQuery.class);
+        return R.ok(experimentDispatchService.pageList(query));
+    }
+
+    /**
+     * 添加实验调度管理
+     */
+    @PreAuthorize("@ss.hasPermi('system:experimentDispatch:add')")
+    @Log(title = "实验调度信息-新增实验调度", businessType = BusinessType.INSERT)
+    @ApiOperation(value = "添加实验调度",response = TExperimentDispatchDTO.class)
+    @PostMapping(value = "/api/t-experiment-dispatch/add")
+    public R<Boolean> add(@RequestBody String param) {
+        TExperimentDispatchDTO dto = JSON.parseObject(param,TExperimentDispatchDTO.class);
+        // TODO 生成实验调度编号
+        experimentDispatchService.save(dto);
+        // 添加实验分组
+        List<TExperimentDispatchGroup> experimentDispatchGroups = dto.getExperimentDispatchGroups();
+        for (TExperimentDispatchGroup experimentDispatchGroup : experimentDispatchGroups) {
+            experimentDispatchGroup.setDispatchId(dto.getId());
+        }
+        experimentDispatchGroupService.saveBatch(experimentDispatchGroups);
+        // 添加参与人员
+        List<TExperimentDispatchParticipants> experimentDispatchParticipants = dto.getExperimentDispatchParticipants();
+        experimentDispatchParticipants.forEach(experimentDispatchParticipant -> {
+            experimentDispatchParticipant.setDispatchId(dto.getId());
+        });
+        experimentDispatchParticipantsService.saveBatch(experimentDispatchParticipants);
+        // 添加实验任务
+        List<TExperimentDispatchTask> experimentDispatchTasks = dto.getExperimentDispatchTasks();
+        experimentDispatchTasks.forEach(experimentDispatchTask -> {
+            experimentDispatchTask.setDispatchId(dto.getId());
+        });
+        experimentDispatchTaskService.saveBatch(experimentDispatchTasks);
+        return R.ok();
+    }
+
+    /**
+     * 修改实验调度
+     */
+    @PreAuthorize("@ss.hasPermi('system:experimentDispatch:edit')")
+    @Log(title = "实验调度信息-修改实验调度", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "修改实验调度")
+    @PostMapping(value = "/api/t-experiment-dispatch/update")
+    public R<Boolean> update(@RequestBody String param) {
+        TExperimentDispatchDTO dto = JSON.parseObject(param,TExperimentDispatchDTO.class);
+        experimentDispatchService.updateById(dto);
+        // 添加实验分组
+        experimentDispatchGroupService.remove(Wrappers.lambdaQuery(TExperimentDispatchGroup.class).eq(TExperimentDispatchGroup::getDispatchId, dto.getId()));
+        List<TExperimentDispatchGroup> experimentDispatchGroups = dto.getExperimentDispatchGroups();
+        for (TExperimentDispatchGroup experimentDispatchGroup : experimentDispatchGroups) {
+            experimentDispatchGroup.setDispatchId(dto.getId());
+        }
+        experimentDispatchGroupService.saveBatch(experimentDispatchGroups);
+        // 添加参与人员
+        experimentDispatchParticipantsService.remove(Wrappers.lambdaQuery(TExperimentDispatchParticipants.class).eq(TExperimentDispatchParticipants::getDispatchId, dto.getId()));
+        List<TExperimentDispatchParticipants> experimentDispatchParticipants = dto.getExperimentDispatchParticipants();
+        experimentDispatchParticipants.forEach(experimentDispatchParticipant -> {
+            experimentDispatchParticipant.setDispatchId(dto.getId());
+        });
+        experimentDispatchParticipantsService.saveBatch(experimentDispatchParticipants);
+        // 添加实验任务
+        experimentDispatchTaskService.remove(Wrappers.lambdaQuery(TExperimentDispatchTask.class).eq(TExperimentDispatchTask::getDispatchId, dto.getId()));
+        List<TExperimentDispatchTask> experimentDispatchTasks = dto.getExperimentDispatchTasks();
+        experimentDispatchTasks.forEach(experimentDispatchTask -> {
+            experimentDispatchTask.setDispatchId(dto.getId());
+        });
+        experimentDispatchTaskService.saveBatch(experimentDispatchTasks);
+        return R.ok();
+    }
+
+    /**
+     * 查看实验调度详情
+     */
+    @PreAuthorize("@ss.hasPermi('system:experimentDispatch:detail')")
+    @ApiOperation(value = "查看实验调度详情")
+    @GetMapping(value = "/open/t-experiment-dispatch/getDetailById")
+    public R<TExperimentDispatchVO> getDetailById(@RequestParam String id) {
+        TExperimentDispatch experimentDispatch = experimentDispatchService.getById(id);
+        TExperimentDispatchVO experimentDispatchVO = new TExperimentDispatchVO();
+        BeanUtils.copyProperties(experimentDispatch, experimentDispatchVO);
+
+        // 查询组别
+        experimentDispatchVO.setExperimentDispatchGroups(experimentDispatchGroupService.list(Wrappers.lambdaQuery(TExperimentDispatchGroup.class).eq(TExperimentDispatchGroup::getDispatchId, id)));
+        // 查询参与人员
+        List<TExperimentDispatchParticipants> list = experimentDispatchParticipantsService.list(Wrappers.lambdaQuery(TExperimentDispatchParticipants.class).eq(TExperimentDispatchParticipants::getDispatchId, id));
+        List<Long> userIds = list.stream().map(TExperimentDispatchParticipants::getUserId).collect(Collectors.toList());
+        if(!CollectionUtils.isEmpty(userIds)){
+            List<SysUser> sysUsers = sysUserMapper.selectUserByIds(userIds);
+            list.forEach(tExperimentDispatchParticipant -> {
+                SysUser sysUser = sysUsers.stream().filter(user -> user.getUserId().equals(tExperimentDispatchParticipant.getUserId())).findFirst().orElse(null);
+                if(sysUser != null){
+                    tExperimentDispatchParticipant.setNickName(sysUser.getNickName());
+                    tExperimentDispatchParticipant.setAvatar(sysUser.getAvatar());
+                }
+            });
+        }
+        experimentDispatchVO.setExperimentDispatchParticipants(list);
+        // 查询实验任务
+        experimentDispatchVO.setExperimentDispatchTasks(experimentDispatchTaskService.list(Wrappers.lambdaQuery(TExperimentDispatchTask.class).eq(TExperimentDispatchTask::getDispatchId, id)));
+
+        return R.ok(experimentDispatchVO);
+    }
+
+    /**
+     * 删除实验调度
+     */
+    @PreAuthorize("@ss.hasPermi('system:experimentDispatch:delete')")
+    @Log(title = "实验调度信息-删除实验调度", businessType = BusinessType.DELETE)
+    @ApiOperation(value = "删除实验调度")
+    @DeleteMapping(value = "/open/t-experiment-dispatch/deleteById")
+    public R<Boolean> deleteById(@RequestParam String id) {
+        // 删除组别
+        experimentDispatchGroupService.remove(Wrappers.lambdaQuery(TExperimentDispatchGroup.class).eq(TExperimentDispatchGroup::getDispatchId, id));
+        // 删除参与人员
+        experimentDispatchParticipantsService.remove(Wrappers.lambdaQuery(TExperimentDispatchParticipants.class).eq(TExperimentDispatchParticipants::getDispatchId, id));
+        // 删除任务
+        experimentDispatchTaskService.remove(Wrappers.lambdaQuery(TExperimentDispatchTask.class).eq(TExperimentDispatchTask::getDispatchId, id));
+        return R.ok(experimentDispatchService.removeById(id));
+    }
+
+    /**
+     * 批量删除实验调度
+     */
+    @PreAuthorize("@ss.hasPermi('system:experimentDispatch:delete')")
+    @Log(title = "实验调度信息-删除实验调度", businessType = BusinessType.DELETE)
+    @ApiOperation(value = "批量删除实验调度")
+    @DeleteMapping(value = "/api/t-experiment-dispatch/deleteByIds")
+    public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
+        // 删除组别
+        experimentDispatchGroupService.remove(Wrappers.lambdaQuery(TExperimentDispatchGroup.class).in(TExperimentDispatchGroup::getDispatchId, ids));
+        // 删除参与人员
+        experimentDispatchParticipantsService.remove(Wrappers.lambdaQuery(TExperimentDispatchParticipants.class).in(TExperimentDispatchParticipants::getDispatchId, ids));
+        // 删除任务
+        experimentDispatchTaskService.remove(Wrappers.lambdaQuery(TExperimentDispatchTask.class).in(TExperimentDispatchTask::getDispatchId, ids));
+        return R.ok(experimentDispatchService.removeByIds(ids));
+    }
+
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectProposalController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectProposalController.java
index 9c0420a..aeaeb0e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectProposalController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectProposalController.java
@@ -1,9 +1,31 @@
 package com.ruoyi.web.controller.api;
 
 
+import com.alibaba.fastjson.JSON;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.dto.AuditStatusDTO;
+import com.ruoyi.system.dto.TProjectProposalDTO;
+import com.ruoyi.system.dto.UpAndDownDTO;
+import com.ruoyi.system.model.TProjectProposal;
+import com.ruoyi.system.query.TProjectProposalQuery;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.TProjectProposalService;
+import com.ruoyi.system.vo.TProjectProposalVO;
 import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -15,8 +37,130 @@
  */
 @Api(tags = "项目课题方案管理")
 @RestController
-@RequestMapping("/t-project-proposal")
+@RequestMapping("")
 public class TProjectProposalController {
 
+    private final TProjectProposalService projectProposalService;
+    private final TokenService tokenService;
+    private final ISysUserService sysUserService;
+    @Autowired
+    public TProjectProposalController(TProjectProposalService projectProposalService, TokenService tokenService, ISysUserService sysUserService) {
+        this.projectProposalService = projectProposalService;
+        this.tokenService = tokenService;
+        this.sysUserService = sysUserService;
+    }
+
+    /**
+     * 获取项目课题方案管理列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:projectProposal:list')")
+    @ApiOperation(value = "获取项目课题方案分页列表")
+    @PostMapping(value = "/api/t-project-proposal/pageList")
+    public R<PageInfo<TProjectProposalVO>> pageList(@RequestBody String param) {
+        TProjectProposalQuery query = JSON.parseObject(param, TProjectProposalQuery.class);
+        return R.ok(projectProposalService.pageList(query));
+    }
+
+    /**
+     * 添加项目课题方案管理
+     */
+    @PreAuthorize("@ss.hasPermi('system:projectProposal:add')")
+    @Log(title = "项目课题方案信息-新增项目课题方案", businessType = BusinessType.INSERT)
+    @ApiOperation(value = "添加项目课题方案",response = TProjectProposalDTO.class)
+    @PostMapping(value = "/api/t-project-proposal/add")
+    public R<Boolean> add(@RequestBody String param) {
+        TProjectProposalDTO dto = JSON.parseObject(param,TProjectProposalDTO.class);
+        // TODO 生成项目课题方案编号
+        projectProposalService.save(dto);
+        return R.ok();
+    }
+
+    /**
+     * 修改项目课题方案
+     */
+    @PreAuthorize("@ss.hasPermi('system:projectProposal:edit')")
+    @Log(title = "项目课题方案信息-修改项目课题方案", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "修改项目课题方案")
+    @PostMapping(value = "/api/t-project-proposal/update")
+    public R<Boolean> update(@RequestBody String param) {
+        TProjectProposalDTO dto = JSON.parseObject(param,TProjectProposalDTO.class);
+        projectProposalService.updateById(dto);
+        return R.ok();
+    }
+
+    /**
+     * 查看项目课题方案详情
+     */
+    @PreAuthorize("@ss.hasPermi('system:projectProposal:detail')")
+    @ApiOperation(value = "查看项目课题方案详情")
+    @GetMapping(value = "/open/t-project-proposal/getDetailById")
+    public R<TProjectProposalVO> getDetailById(@RequestParam String id) {
+        TProjectProposal projectProposal = projectProposalService.getById(id);
+        TProjectProposalVO projectProposalVO = new TProjectProposalVO();
+        BeanUtils.copyProperties(projectProposal, projectProposalVO);
+        // 查询审核人姓名
+        SysUser sysUser = sysUserService.selectUserById(projectProposal.getAuditPersonId());
+        if(Objects.nonNull(sysUser)){
+            projectProposalVO.setAuditPersonName(sysUser.getNickName());
+        }
+        return R.ok(projectProposalVO);
+    }
+
+    /**
+     * 删除项目课题方案
+     */
+    @PreAuthorize("@ss.hasPermi('system:projectProposal:delete')")
+    @Log(title = "项目课题方案信息-删除项目课题方案", businessType = BusinessType.DELETE)
+    @ApiOperation(value = "删除项目课题方案")
+    @DeleteMapping(value = "/open/t-project-proposal/deleteById")
+    public R<Boolean> deleteById(@RequestParam String id) {
+        return R.ok(projectProposalService.removeById(id));
+    }
+
+    /**
+     * 批量删除项目课题方案
+     */
+    @PreAuthorize("@ss.hasPermi('system:projectProposal:delete')")
+    @Log(title = "项目课题方案信息-删除项目课题方案", businessType = BusinessType.DELETE)
+    @ApiOperation(value = "批量删除项目课题方案")
+    @DeleteMapping(value = "/api/t-project-proposal/deleteByIds")
+    public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
+        return R.ok(projectProposalService.removeByIds(ids));
+    }
+
+    /**
+     * 修改项目课题方案
+     */
+    @PreAuthorize("@ss.hasPermi('system:projectProposal:upAndDown')")
+    @Log(title = "项目课题方案信息-修改项目课题方案状态[支持已撤消接口]", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "修改项目课题方案状态",response = UpAndDownDTO.class)
+    @PostMapping(value = "/api/t-project-proposal/upAndDown")
+    public R<Boolean> upAndDown(@RequestBody String param) {
+        UpAndDownDTO dto = JSON.parseObject(param,UpAndDownDTO.class);
+        TProjectProposal projectProposal = projectProposalService.getById(dto.getId());
+        projectProposal.setAuditStatus(dto.getStatus());
+        projectProposalService.updateById(projectProposal);
+        return R.ok();
+    }
+
+    /**
+     * 修改项目课题方案
+     */
+    @PreAuthorize("@ss.hasPermi('system:projectProposal:audit')")
+    @Log(title = "项目课题方案信息-审核项目课题方案", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "审核项目课题方案",response = UpAndDownDTO.class)
+    @PostMapping(value = "/api/t-project-proposal/audit")
+    public R<Boolean> audit(@RequestBody String param) {
+        Long userId = tokenService.getLoginUser().getUserId();
+        AuditStatusDTO dto = JSON.parseObject(param,AuditStatusDTO.class);
+        TProjectProposal projectProposal = projectProposalService.getById(dto.getId());
+        projectProposal.setAuditStatus(dto.getAuditStatus());
+        projectProposal.setAuditRemark(dto.getAuditRemark());
+        projectProposal.setAuditPersonId(userId);
+        projectProposal.setAuditTime(LocalDateTime.now());
+        projectProposalService.updateById(projectProposal);
+        return R.ok();
+    }
+    
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectTeamController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectTeamController.java
index 453ee82..794659b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectTeamController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectTeamController.java
@@ -51,7 +51,7 @@
      */
     @PreAuthorize("@ss.hasPermi('system:projectTeam:list')")
     @ApiOperation(value = "获取项目组分页列表")
-    @PostMapping(value = "/api/pageList")
+    @PostMapping(value = "/api/t-project-team/pageList")
     public R<PageInfo<TProjectTeamVO>> pageList(@RequestBody String param) {
         TProjectTeamQuery query = JSON.parseObject(param, TProjectTeamQuery.class);
         return R.ok(projectTeamService.pageList(query));
@@ -63,7 +63,7 @@
     @PreAuthorize("@ss.hasPermi('system:projectTeam:add')")
     @Log(title = "项目组信息-新增项目组", businessType = BusinessType.INSERT)
     @ApiOperation(value = "添加项目组",response = TProjectTeamDTO.class)
-    @PostMapping(value = "/api/add")
+    @PostMapping(value = "/api/t-project-team/add")
     public R<Boolean> add(@RequestBody String param) {
         TProjectTeamDTO dto = JSON.parseObject(param,TProjectTeamDTO.class);
         projectTeamService.save(dto);
@@ -82,7 +82,7 @@
     @PreAuthorize("@ss.hasPermi('system:projectTeam:edit')")
     @Log(title = "项目组信息-修改项目组", businessType = BusinessType.UPDATE)
     @ApiOperation(value = "修改项目组")
-    @PostMapping(value = "/api/update")
+    @PostMapping(value = "/api/t-project-team/update")
     public R<Boolean> update(@RequestBody String param) {
         TProjectTeamDTO dto = JSON.parseObject(param,TProjectTeamDTO.class);
         projectTeamService.updateById(dto);
@@ -102,7 +102,7 @@
      */
     @PreAuthorize("@ss.hasPermi('system:projectTeam:detail')")
     @ApiOperation(value = "查看项目组详情")
-    @GetMapping(value = "/open/getDetailById")
+    @GetMapping(value = "/open/t-project-team/getDetailById")
     public R<TProjectTeamVO> getDetailById(@RequestParam String id) {
         TProjectTeam projectTeam = projectTeamService.getById(id);
         TProjectTeamVO projectTeamVO = new TProjectTeamVO();
@@ -118,7 +118,7 @@
     @PreAuthorize("@ss.hasPermi('system:projectTeam:delete')")
     @Log(title = "项目组信息-删除项目组", businessType = BusinessType.DELETE)
     @ApiOperation(value = "删除项目组")
-    @DeleteMapping(value = "/open/deleteById")
+    @DeleteMapping(value = "/open/t-project-team/deleteById")
     public R<Boolean> deleteById(@RequestParam String id) {
         // 删除项目组成员
         projectTeamStaffService.remove(Wrappers.lambdaQuery(TProjectTeamStaff.class).eq(TProjectTeamStaff::getTeamId, id));
@@ -131,7 +131,7 @@
     @PreAuthorize("@ss.hasPermi('system:projectTeam:delete')")
     @Log(title = "项目组信息-删除项目组", businessType = BusinessType.DELETE)
     @ApiOperation(value = "批量删除项目组")
-    @DeleteMapping(value = "/api/deleteByIds")
+    @DeleteMapping(value = "/api/t-project-team/deleteByIds")
     public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
         // 删除项目组成员
         projectTeamStaffService.remove(Wrappers.lambdaQuery(TProjectTeamStaff.class).in(TProjectTeamStaff::getTeamId, ids));
@@ -144,7 +144,7 @@
     @PreAuthorize("@ss.hasPermi('system:projectTeam:upAndDown')")
     @Log(title = "项目组信息-修改项目组状态", businessType = BusinessType.UPDATE)
     @ApiOperation(value = "修改项目组状态",response = UpAndDownDTO.class)
-    @PostMapping(value = "/api/upAndDown")
+    @PostMapping(value = "/api/t-project-team/upAndDown")
     public R<Boolean> upAndDown(@RequestBody String param) {
         UpAndDownDTO dto = JSON.parseObject(param,UpAndDownDTO.class);
         TProjectTeam projectTeam = projectTeamService.getById(dto.getId());
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/AuditStatusDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/AuditStatusDTO.java
new file mode 100644
index 0000000..b4ae777
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/AuditStatusDTO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "启用禁用DTO")
+public class AuditStatusDTO implements Serializable {
+
+    @ApiModelProperty(value = "id")
+    private String id;
+
+    @ApiModelProperty(value = "审核状态")
+    private Integer auditStatus;
+
+    @ApiModelProperty(value = "审核意见")
+    private String auditRemark;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TExperimentDispatchDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TExperimentDispatchDTO.java
new file mode 100644
index 0000000..eab253d
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TExperimentDispatchDTO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.system.dto;
+
+import com.ruoyi.system.model.TExperimentDispatch;
+import com.ruoyi.system.model.TExperimentDispatchGroup;
+import com.ruoyi.system.model.TExperimentDispatchParticipants;
+import com.ruoyi.system.model.TExperimentDispatchTask;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "实验调度新增")
+public class TExperimentDispatchDTO extends TExperimentDispatch {
+
+    @ApiModelProperty(value = "组别列表")
+    private List<TExperimentDispatchGroup> experimentDispatchGroups;
+    @ApiModelProperty(value = "参与人员")
+    private List<TExperimentDispatchParticipants> experimentDispatchParticipants;
+    @ApiModelProperty(value = "组别列表")
+    private List<TExperimentDispatchTask> experimentDispatchTasks;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TProjectProposalDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TProjectProposalDTO.java
new file mode 100644
index 0000000..9b22df7
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TProjectProposalDTO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.system.dto;
+
+import com.ruoyi.system.model.TProjectProposal;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "项目课题方案添加编辑DTO")
+public class TProjectProposalDTO extends TProjectProposal {
+
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentDispatchMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentDispatchMapper.java
index 8fdf961..5f61863 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentDispatchMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentDispatchMapper.java
@@ -1,7 +1,13 @@
 package com.ruoyi.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.model.TExperimentDispatch;
+import com.ruoyi.system.query.TExperimentDispatchQuery;
+import com.ruoyi.system.vo.TExperimentDispatchVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +19,11 @@
  */
 public interface TExperimentDispatchMapper extends BaseMapper<TExperimentDispatch> {
 
+    /**
+     * 分页查询实验调度管理
+     * @param query
+     * @param pageInfo
+     * @return
+     */
+    List<TExperimentDispatchVO> pageList(@Param("query") TExperimentDispatchQuery query, @Param("pageInfo")PageInfo<TExperimentDispatchVO> pageInfo);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TProjectProposalMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TProjectProposalMapper.java
index 41df9c7..e6598bf 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TProjectProposalMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TProjectProposalMapper.java
@@ -1,7 +1,13 @@
 package com.ruoyi.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.model.TProjectProposal;
+import com.ruoyi.system.query.TProjectProposalQuery;
+import com.ruoyi.system.vo.TProjectProposalVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +19,11 @@
  */
 public interface TProjectProposalMapper extends BaseMapper<TProjectProposal> {
 
+    /**
+     * 分页查询
+     * @param query
+     * @param pageInfo
+     * @return
+     */
+    List<TProjectProposalVO> pageList(@Param("query") TProjectProposalQuery query, @Param("pageInfo")PageInfo<TProjectProposalVO> pageInfo);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TChemistWorkEvaluate.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TChemistWorkEvaluate.java
index 32919f6..9b62cdf 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TChemistWorkEvaluate.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TChemistWorkEvaluate.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -71,9 +72,10 @@
 
     @ApiModelProperty(value = "评定人")
     @TableField("evaluate_person_id")
-    private Integer evaluatePersonId;
+    private Long evaluatePersonId;
 
     @ApiModelProperty(value = "评定时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("evaluate_time")
     private LocalDateTime evaluateTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TClinicalTrialPoints.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TClinicalTrialPoints.java
index 48a4c4d..8850534 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TClinicalTrialPoints.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TClinicalTrialPoints.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -38,6 +39,7 @@
     private String trialContent;
 
     @ApiModelProperty(value = "临床试验时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("trial_time")
     private LocalDateTime trialTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatch.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatch.java
index 79edaf4..69adafc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatch.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatch.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -34,6 +35,7 @@
     private String proposalId;
 
     @ApiModelProperty(value = "实验日期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("experiment_date")
     private LocalDateTime experimentDate;
 
@@ -46,10 +48,12 @@
     private String experimentCode;
 
     @ApiModelProperty(value = "实验开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("experiment_start_time")
     private LocalDateTime experimentStartTime;
 
     @ApiModelProperty(value = "实验结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("experiment_end_time")
     private LocalDateTime experimentEndTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchParticipants.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchParticipants.java
index e305ed6..f658f57 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchParticipants.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchParticipants.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -37,7 +38,7 @@
 
     @ApiModelProperty(value = "用户id")
     @TableField("user_id")
-    private Integer userId;
+    private Long userId;
 
     @ApiModelProperty(value = "角色类型 3=工艺工程师 4=实验员 5=化验师")
     @TableField("role_type")
@@ -52,8 +53,15 @@
     private String confirmSign;
 
     @ApiModelProperty(value = "签字时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("sign_time")
     private LocalDateTime signTime;
 
+    @ApiModelProperty(value = "用户姓名")
+    @TableField(exist = false)
+    private String nickName;
 
+    @ApiModelProperty(value = "用户头像")
+    @TableField(exist = false)
+    private String avatar;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchTask.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchTask.java
index e9d6ddd..689b320 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchTask.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchTask.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -44,6 +45,7 @@
     private String personCharge;
 
     @ApiModelProperty(value = "开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("start_time")
     private LocalDateTime startTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentResultReport.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentResultReport.java
index 6ab7971..8b34017 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentResultReport.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentResultReport.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -67,9 +68,10 @@
 
     @ApiModelProperty(value = "评定人")
     @TableField("evaluate_person_id")
-    private Integer evaluatePersonId;
+    private Long evaluatePersonId;
 
     @ApiModelProperty(value = "评定时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("evaluate_time")
     private LocalDateTime evaluateTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentScheme.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentScheme.java
index 0aeede7..6b6ae7b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentScheme.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentScheme.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -34,6 +35,7 @@
     private String dispatchId;
 
     @ApiModelProperty(value = "实验日期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("experiment_date")
     private LocalDateTime experimentDate;
 
@@ -75,9 +77,10 @@
 
     @ApiModelProperty(value = "审核人")
     @TableField("audit_person_id")
-    private String auditPersonId;
+    private Long auditPersonId;
 
     @ApiModelProperty(value = "审批时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("audit_time")
     private LocalDateTime auditTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentSchemePerson.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentSchemePerson.java
index 1dab9e0..28ebad8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentSchemePerson.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentSchemePerson.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -40,6 +41,7 @@
     private Integer userId;
 
     @ApiModelProperty(value = "提交时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("commit_time")
     private LocalDateTime commitTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityReportFile.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityReportFile.java
index f671cb8..163966e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityReportFile.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityReportFile.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -52,6 +53,7 @@
     private Integer reportType;
 
     @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("create_time")
     private LocalDateTime createTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityStudyReport.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityStudyReport.java
index 45e6706..3a8dfab 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityStudyReport.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityStudyReport.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -55,9 +56,10 @@
 
     @ApiModelProperty(value = "审批人")
     @TableField("audit_person_id")
-    private Integer auditPersonId;
+    private Long auditPersonId;
 
     @ApiModelProperty(value = "审批时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("audit_time")
     private LocalDateTime auditTime;
 
@@ -67,9 +69,10 @@
 
     @ApiModelProperty(value = "评定人")
     @TableField("evaluate_person_id")
-    private Integer evaluatePersonId;
+    private Long evaluatePersonId;
 
     @ApiModelProperty(value = "评定时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("evaluate_time")
     private LocalDateTime evaluateTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectApprovalReport.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectApprovalReport.java
index c01b608..1e78b02 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectApprovalReport.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectApprovalReport.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -51,9 +52,10 @@
 
     @ApiModelProperty(value = "审批人")
     @TableField("audit_person_id")
-    private Integer auditPersonId;
+    private Long auditPersonId;
 
     @ApiModelProperty(value = "审批时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("audit_time")
     private LocalDateTime auditTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectProposal.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectProposal.java
index 3260832..341ff56 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectProposal.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectProposal.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -79,9 +80,10 @@
 
     @ApiModelProperty(value = "审批人")
     @TableField("audit_person_id")
-    private String auditPersonId;
+    private Long auditPersonId;
 
     @ApiModelProperty(value = "审批时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("audit_time")
     private LocalDateTime auditTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaProduceReport.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaProduceReport.java
index f616df4..83c900e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaProduceReport.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaProduceReport.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -46,6 +47,7 @@
     private String developPerson;
 
     @ApiModelProperty(value = "制定日期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("develop_date")
     private LocalDateTime developDate;
 
@@ -59,9 +61,10 @@
 
     @ApiModelProperty(value = "审批人")
     @TableField("audit_person_id")
-    private Integer auditPersonId;
+    private Long auditPersonId;
 
     @ApiModelProperty(value = "审批时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("audit_time")
     private LocalDateTime auditTime;
 
@@ -75,9 +78,10 @@
 
     @ApiModelProperty(value = "评定人")
     @TableField("evaluate_person_id")
-    private Integer evaluatePersonId;
+    private Long evaluatePersonId;
 
     @ApiModelProperty(value = "评定时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("evaluate_time")
     private LocalDateTime evaluateTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaReportFile.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaReportFile.java
index 37fc592..e1792ad 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaReportFile.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaReportFile.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -52,6 +53,7 @@
     private Integer reportType;
 
     @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("create_time")
     private LocalDateTime createTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItem.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItem.java
index b39c8cf..028f223 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItem.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItem.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -51,9 +52,10 @@
 
     @ApiModelProperty(value = "评定人")
     @TableField("evaluate_person_id")
-    private Integer evaluatePersonId;
+    private Long evaluatePersonId;
 
     @ApiModelProperty(value = "评定时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("evaluate_time")
     private LocalDateTime evaluateTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItemReport.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItemReport.java
index 2c9239a..d22e9ee 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItemReport.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItemReport.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -42,6 +43,7 @@
     private String developPerson;
 
     @ApiModelProperty(value = "制定日期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("develop_date")
     private LocalDateTime developDate;
 
@@ -51,9 +53,10 @@
 
     @ApiModelProperty(value = "审批人")
     @TableField("audit_person_id")
-    private Integer auditPersonId;
+    private Long auditPersonId;
 
     @ApiModelProperty(value = "审批时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("audit_time")
     private LocalDateTime auditTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSamplingRecordOperation.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSamplingRecordOperation.java
index b6c5cd3..76ddc0f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSamplingRecordOperation.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSamplingRecordOperation.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -34,6 +35,7 @@
     private String samplingId;
 
     @ApiModelProperty(value = "工艺时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("process_time")
     private LocalDateTime processTime;
 
@@ -102,6 +104,7 @@
     private Integer sampleAmount;
 
     @ApiModelProperty(value = "送样时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("send_sample_time")
     private LocalDateTime sendSampleTime;
 
@@ -111,7 +114,7 @@
 
     @ApiModelProperty(value = "操作人")
     @TableField("handle_person_id")
-    private Integer handlePersonId;
+    private Long handlePersonId;
 
     @ApiModelProperty(value = "状态 1=待发送 2=待接收 3=已接收")
     @TableField("status")
@@ -119,25 +122,27 @@
 
     @ApiModelProperty(value = "送样人")
     @TableField("send_person_id")
-    private Integer sendPersonId;
+    private Long sendPersonId;
 
     @ApiModelProperty(value = "送样签字")
     @TableField("send_sign")
     private String sendSign;
 
     @ApiModelProperty(value = "送样时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("send_time")
     private LocalDateTime sendTime;
 
     @ApiModelProperty(value = "接收人")
     @TableField("receipts_person_id")
-    private Integer receiptsPersonId;
+    private Long receiptsPersonId;
 
     @ApiModelProperty(value = "接收签字")
     @TableField("receipts_sign")
     private String receiptsSign;
 
     @ApiModelProperty(value = "接收时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("receipts_time")
     private LocalDateTime receiptsTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTestMethodConfirmSheet.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTestMethodConfirmSheet.java
index c8b586f..42bce1b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTestMethodConfirmSheet.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTestMethodConfirmSheet.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -38,6 +39,7 @@
     private String confirmSign;
 
     @ApiModelProperty(value = "签字时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("sign_time")
     private LocalDateTime signTime;
 
@@ -47,13 +49,14 @@
 
     @ApiModelProperty(value = "审核人")
     @TableField("audit_person_id")
-    private String auditPersonId;
+    private Long auditPersonId;
 
     @ApiModelProperty(value = "审核签字")
     @TableField("audit_sign")
     private String auditSign;
 
     @ApiModelProperty(value = "审核时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("audit_time")
     private LocalDateTime auditTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterOtherTask.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterOtherTask.java
index f8845a7..cae200b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterOtherTask.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterOtherTask.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -38,6 +39,7 @@
     private String taskContent;
 
     @ApiModelProperty(value = "任务时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("task_time")
     private LocalDateTime taskTime;
 
@@ -46,6 +48,7 @@
     private Double evaluateScore;
 
     @ApiModelProperty(value = "评定时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("evaluate_time")
     private LocalDateTime evaluateTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterWorkEvaluate.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterWorkEvaluate.java
index 704962a..18829f5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterWorkEvaluate.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterWorkEvaluate.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.model;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -71,9 +72,10 @@
 
     @ApiModelProperty(value = "评定人")
     @TableField("evaluate_person_id")
-    private Integer evaluatePersonId;
+    private Long evaluatePersonId;
 
     @ApiModelProperty(value = "评定时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("evaluate_time")
     private LocalDateTime evaluateTime;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TExperimentDispatchQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TExperimentDispatchQuery.java
new file mode 100644
index 0000000..3bd693f
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TExperimentDispatchQuery.java
@@ -0,0 +1,20 @@
+package com.ruoyi.system.query;
+
+import com.ruoyi.common.core.domain.model.TimeRangeQueryBody;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "实验调度query")
+public class TExperimentDispatchQuery extends TimeRangeQueryBody {
+
+    @ApiModelProperty(value = "项目课题方案名称")
+    private String projectName;
+    @ApiModelProperty(value = "实验编号")
+    private String experimentCode;
+
+    @ApiModelProperty(value = "状态 -1=草稿箱 1=待确认 2=已确认 3=已封存")
+    private Integer status;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TProjectProposalQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TProjectProposalQuery.java
new file mode 100644
index 0000000..05dd4ef
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TProjectProposalQuery.java
@@ -0,0 +1,22 @@
+package com.ruoyi.system.query;
+
+import com.ruoyi.common.core.domain.model.TimeRangeQueryBody;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "项目课题方案query")
+public class TProjectProposalQuery extends TimeRangeQueryBody {
+
+    @ApiModelProperty(value = "项目课题方案名称")
+    private String projectName;
+    @ApiModelProperty(value = "方案编号")
+    private String projectCode;
+    @ApiModelProperty(value = "审批人")
+    private String auditPersonName;
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    @ApiModelProperty(value = "审批状态  -1=草稿箱 1=审批中 2=已通过 3=已驳回 4=已撤销 5=已封存")
+    private Integer auditStatus;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentDispatchService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentDispatchService.java
index f4c85d1..36b7c8e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentDispatchService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentDispatchService.java
@@ -1,7 +1,10 @@
 package com.ruoyi.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.model.TExperimentDispatch;
+import com.ruoyi.system.query.TExperimentDispatchQuery;
+import com.ruoyi.system.vo.TExperimentDispatchVO;
 
 /**
  * <p>
@@ -13,4 +16,10 @@
  */
 public interface TExperimentDispatchService extends IService<TExperimentDispatch> {
 
+    /**
+     * 分页查询实验调度管理
+     * @param query
+     * @return
+     */
+    PageInfo<TExperimentDispatchVO> pageList(TExperimentDispatchQuery query);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TProjectProposalService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TProjectProposalService.java
index 7df12d4..7834701 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TProjectProposalService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TProjectProposalService.java
@@ -1,7 +1,10 @@
 package com.ruoyi.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.model.TProjectProposal;
+import com.ruoyi.system.query.TProjectProposalQuery;
+import com.ruoyi.system.vo.TProjectProposalVO;
 
 /**
  * <p>
@@ -13,4 +16,10 @@
  */
 public interface TProjectProposalService extends IService<TProjectProposal> {
 
+    /**
+     * 分页查询项目课题方案
+     * @param query
+     * @return
+     */
+    PageInfo<TProjectProposalVO> pageList(TProjectProposalQuery query);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentDispatchServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentDispatchServiceImpl.java
index 385193f..5388dca 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentDispatchServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentDispatchServiceImpl.java
@@ -1,10 +1,25 @@
 package com.ruoyi.system.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.mapper.TExperimentDispatchMapper;
+import com.ruoyi.system.mapper.TExperimentDispatchParticipantsMapper;
 import com.ruoyi.system.model.TExperimentDispatch;
+import com.ruoyi.system.model.TExperimentDispatchParticipants;
+import com.ruoyi.system.model.TProjectTeamStaff;
+import com.ruoyi.system.query.TExperimentDispatchQuery;
 import com.ruoyi.system.service.TExperimentDispatchService;
+import com.ruoyi.system.vo.TExperimentDispatchVO;
+import com.ruoyi.system.vo.TProjectTeamVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +32,35 @@
 @Service
 public class TExperimentDispatchServiceImpl extends ServiceImpl<TExperimentDispatchMapper, TExperimentDispatch> implements TExperimentDispatchService {
 
+    @Autowired
+    private TExperimentDispatchParticipantsMapper experimentDispatchParticipantsMapper;
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    @Override
+    public PageInfo<TExperimentDispatchVO> pageList(TExperimentDispatchQuery query) {
+        PageInfo<TExperimentDispatchVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TExperimentDispatchVO> list = this.baseMapper.pageList(query,pageInfo);
+        // 查询参与人员
+        List<String> ids = list.stream().map(TExperimentDispatchVO::getId).collect(Collectors.toList());
+        if(!CollectionUtils.isEmpty(ids)){
+            List<TExperimentDispatchParticipants> tExperimentDispatchParticipants = experimentDispatchParticipantsMapper.selectList(Wrappers.lambdaQuery(TExperimentDispatchParticipants.class)
+                    .in(TExperimentDispatchParticipants::getDispatchId, ids));
+            List<Long> userIds = tExperimentDispatchParticipants.stream().map(TExperimentDispatchParticipants::getUserId).collect(Collectors.toList());
+            List<SysUser> sysUsers = sysUserMapper.selectUserByIds(userIds);
+            tExperimentDispatchParticipants.forEach(tExperimentDispatchParticipant -> {
+                SysUser sysUser = sysUsers.stream().filter(user -> user.getUserId().equals(tExperimentDispatchParticipant.getUserId())).findFirst().orElse(null);
+                if(sysUser != null){
+                    tExperimentDispatchParticipant.setNickName(sysUser.getNickName());
+                }
+            });
+            for (TExperimentDispatchVO tExperimentDispatchVO : list) {
+                List<TExperimentDispatchParticipants> experimentDispatchParticipants = tExperimentDispatchParticipants.stream().filter(tExperimentDispatchParticipant -> tExperimentDispatchParticipant.getDispatchId().equals(tExperimentDispatchVO.getId())).collect(Collectors.toList());
+                String participantsName = experimentDispatchParticipants.stream().map(TExperimentDispatchParticipants::getNickName).collect(Collectors.joining(";"));
+                tExperimentDispatchVO.setParticipantsName(participantsName);
+            }
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TProjectProposalServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TProjectProposalServiceImpl.java
index 8fc629e..7c1ca9f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TProjectProposalServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TProjectProposalServiceImpl.java
@@ -1,10 +1,20 @@
 package com.ruoyi.system.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.mapper.TProjectProposalMapper;
 import com.ruoyi.system.model.TProjectProposal;
+import com.ruoyi.system.model.TProjectTeamStaff;
+import com.ruoyi.system.query.TProjectProposalQuery;
 import com.ruoyi.system.service.TProjectProposalService;
+import com.ruoyi.system.vo.TProjectProposalVO;
+import com.ruoyi.system.vo.TProjectTeamVO;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +27,11 @@
 @Service
 public class TProjectProposalServiceImpl extends ServiceImpl<TProjectProposalMapper, TProjectProposal> implements TProjectProposalService {
 
+    @Override
+    public PageInfo<TProjectProposalVO> pageList(TProjectProposalQuery query) {
+        PageInfo<TProjectProposalVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TProjectProposalVO> list = this.baseMapper.pageList(query,pageInfo);
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TExperimentDispatchVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TExperimentDispatchVO.java
new file mode 100644
index 0000000..34cff03
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TExperimentDispatchVO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.system.vo;
+
+import com.ruoyi.system.model.TExperimentDispatch;
+import com.ruoyi.system.model.TExperimentDispatchGroup;
+import com.ruoyi.system.model.TExperimentDispatchParticipants;
+import com.ruoyi.system.model.TExperimentDispatchTask;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "实验调度VO")
+public class TExperimentDispatchVO extends TExperimentDispatch {
+
+    @ApiModelProperty(value = "项目课题方案名称")
+    private String projectName;
+    @ApiModelProperty(value = "参与人员名称拼接")
+    private String participantsName;
+
+    @ApiModelProperty(value = "组别列表")
+    private List<TExperimentDispatchGroup> experimentDispatchGroups;
+    @ApiModelProperty(value = "参与人员")
+    private List<TExperimentDispatchParticipants> experimentDispatchParticipants;
+    @ApiModelProperty(value = "组别列表")
+    private List<TExperimentDispatchTask> experimentDispatchTasks;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TProjectProposalVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TProjectProposalVO.java
new file mode 100644
index 0000000..907d134
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TProjectProposalVO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.system.vo;
+
+import com.ruoyi.system.model.TProjectProposal;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "项目课题方案VO")
+public class TProjectProposalVO extends TProjectProposal {
+
+    @ApiModelProperty(value = "审核人名称")
+    private String auditPersonName;
+
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TExperimentDispatchMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TExperimentDispatchMapper.xml
index bf0b484..b9adb47 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TExperimentDispatchMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TExperimentDispatchMapper.xml
@@ -24,5 +24,29 @@
     <sql id="Base_Column_List">
         id, proposal_id, experiment_date, experiment_name, experiment_code, experiment_start_time, experiment_end_time, key_nodes, status, create_time, update_time, create_by, update_by, disabled
     </sql>
+    <select id="pageList" resultType="com.ruoyi.system.vo.TExperimentDispatchVO">
+        SELECT
+        ted.id, ted.proposal_id, ted.experiment_date, ted.experiment_name, ted.experiment_code, ted.experiment_start_time,
+        ted.experiment_end_time, ted.key_nodes, ted.status, ted.create_time, ted.update_time, ted.create_by, ted.update_by,
+        ted.disabled,tpp.project_name as projectName
+        from t_experiment_dispatch ted
+        left join t_project_proposal tpp on ted.proposal_id = tpp.id
+        <where>
+            <if test="query.proposalName != null and query.proposalName != ''">
+                and tpp.proposal_name like concat('%',#{query.proposalName},'%')
+            </if>
+            <if test="query.experimentCode != null and query.experimentCode != ''">
+                and ted.experiment_code like concat('%',#{query.experimentCode},'%')
+            </if>
+            <if test="query.status !=null">
+                and ted.status = #{query.status}
+            </if>
+            <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
+                AND ted.create_time BETWEEN #{query.startTime} AND #{query.endTime}
+            </if>
+            AND ted.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        </where>
+        ORDER BY ted.create_time DESC
+    </select>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TProjectProposalMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TProjectProposalMapper.xml
index b86ceed..7f8094f 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TProjectProposalMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TProjectProposalMapper.xml
@@ -31,5 +31,35 @@
     <sql id="Base_Column_List">
         id, project_name, project_stage, project_code, experiment_objective, experiment_material, experiment_device, experiment_test_method, experiment_procedure, data_acquisition, result_evaluation, precautions, audit_status, audit_person_id, audit_time, audit_remark, create_time, update_time, create_by, update_by, disabled
     </sql>
+    <select id="pageList" resultType="com.ruoyi.system.vo.TProjectProposalVO">
+        select tpp.id, tpp.project_name, tpp.project_stage, tpp.project_code, tpp.experiment_objective, tpp.experiment_material, tpp.experiment_device,
+        tpp.experiment_test_method, tpp.experiment_procedure, tpp.data_acquisition, tpp.result_evaluation, tpp.precautions, tpp.audit_status,
+        tpp.audit_person_id, tpp.audit_time, tpp.audit_remark, tpp.create_time, tpp.update_time, tpp.create_by, tpp.update_by, tpp.disabled,
+        su.nickname as auditPersonName
+        from t_project_proposal tpp
+        left join sys_user su on su.user_id = tpp.audit_person_id
+        <where>
+            <if test="query.projectName != null and query.projectName != ''">
+                and tpp.project_name like concat('%',#{query.projectName},'%')
+            </if>
+            <if test="query.projectCode != null and query.projectCode != ''">
+                and tpp.project_code like concat('%',#{query.projectCode},'%')
+            </if>
+            <if test="query.auditPersonName != null and query.auditPersonName != ''">
+                and su.nickname like concat('%',#{query.auditPersonName},'%')
+            </if>
+            <if test="query.createBy != null and query.createBy != ''">
+                and tpp.createBy like concat('%',#{query.createBy},'%')
+            </if>
+            <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
+                AND tpp.create_time BETWEEN #{query.startTime} AND #{query.endTime}
+            </if>
+            <if test="query.auditStatus != null">
+                AND tpp.audit_status = #{query.auditStatus}
+            </if>
+            AND tpp.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        </where>
+        ORDER BY tpp.create_time DESC
+    </select>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TProjectTeamMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TProjectTeamMapper.xml
index 502bded..7d502d9 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TProjectTeamMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TProjectTeamMapper.xml
@@ -31,8 +31,7 @@
                 AND person_charge LIKE CONCAT('%', #{personCharge}, '%')
             </if>
             <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
-                AND create_time &gt;= #{query.startTime}
-                AND create_time &lt;= #{query.endTime}
+                AND create_time BETWEEN #{query.startTime} AND #{query.endTime}
             </if>
             AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
         </where>

--
Gitblit v1.7.1