xuhy
2025-04-12 77a409bdbaa1ed9f8ac7829f6ffbb7521e61f854
课题方案,实验调度管理
32个文件已修改
7个文件已添加
761 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentDispatchController.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectProposalController.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectTeamController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/AuditStatusDTO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/TExperimentDispatchDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/TProjectProposalDTO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentDispatchMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TProjectProposalMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TChemistWorkEvaluate.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TClinicalTrialPoints.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatch.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchParticipants.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatchTask.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentResultReport.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentScheme.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentSchemePerson.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityReportFile.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TFeasibilityStudyReport.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectApprovalReport.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectProposal.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TQaProduceReport.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TQaReportFile.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItem.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TQaTestItemReport.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TSamplingRecordOperation.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TTestMethodConfirmSheet.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterOtherTask.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TTesterWorkEvaluate.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TExperimentDispatchQuery.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TProjectProposalQuery.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentDispatchService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TProjectProposalService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentDispatchServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TProjectProposalServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TExperimentDispatchVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TProjectProposalVO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TExperimentDispatchMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TProjectProposalMapper.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TProjectTeamMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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));
    }
}
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();
    }
}
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());
ruoyi-system/src/main/java/com/ruoyi/system/dto/AuditStatusDTO.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/dto/TExperimentDispatchDTO.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/dto/TProjectProposalDTO.java
New file
@@ -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 {
}
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);
}
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);
}
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;
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;
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;
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;
}
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
ruoyi-system/src/main/java/com/ruoyi/system/query/TExperimentDispatchQuery.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TProjectProposalQuery.java
New file
@@ -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;
}
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);
}
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);
}
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;
    }
}
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;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TExperimentDispatchVO.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TProjectProposalVO.java
New file
@@ -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;
}
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>
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>
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>