wenminjie
2026-07-14 bd6b08e65fe29994c6c6b5430639022f2a4f5e5c
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainValidationDataController.java
@@ -13,6 +13,7 @@
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.*;
import com.ruoyi.system.mapper.TProjectTeamMapper;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.TBreedingAndPreservationQuery;
import com.ruoyi.system.query.TStrainValidationDataQuery;
@@ -30,6 +31,7 @@
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -49,15 +51,50 @@
    private TStrainValidationDataService strainValidationDataService;
    @Resource
    private TStrainValidationDataDetailService strainValidationDataDetailService;
    @Resource
    private ISysUserService sysUserService;
    /**
     * 菌种验证数据资料分页列表
     */
    //@PreAuthorize("@ss.hasPermi('system:strainValidationData:list')")
    @ApiOperation(value = "菌种验证数据资料-获取菌种验证数据资料分页列表",response = TStrainValidationDataQuery.class)
    @PostMapping(value = "/api/t-strain-validation-data/pageList")
    public R<PageInfo<TStrainValidationDataVO>> pageList(@RequestBody String param) {
        TStrainValidationDataQuery query = JSON.parseObject(param, TStrainValidationDataQuery.class);
        SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId());
        if (sysUser.getRoleType().equals("2")){
            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                    .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
            if (!allProjectIds.isEmpty()){                List<String> projectIds = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
                    .list().stream().map(TProjectTeam::getId).collect(Collectors.toList());
                if (projectIds.isEmpty()){
                    return R.ok(new PageInfo<>());
                }
                query.setProjectIds(projectIds);
            }else {
                return R.ok(new PageInfo<>());
            }
        }else if (!sysUser.getRoleType().equals("1")){
            if (query.getProjectIds() == null || query.getProjectIds().isEmpty()) {
                if (query.getProjectIds() == null || query.getProjectIds().isEmpty()) {
                    List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                            .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
                    if (!allProjectIds.isEmpty()){
                        List<String> projectIds = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
                                .eq(TProjectTeam::getStatus, 1).list().stream().map(TProjectTeam::getId).collect(Collectors.toList());
                        if (projectIds.isEmpty()){
                            return R.ok(new PageInfo<>());
                        }
                        query.setProjectIds(projectIds);
                    }else {
                        return R.ok(new PageInfo<>());
                    }
                }
            }
        }
        return R.ok(strainValidationDataService.pageList(query));
    }
    /**
@@ -72,32 +109,53 @@
        if (StringUtils.hasLength(dto.getHandleSignature())){
            dto.setHandleTime(LocalDateTime.now());
        }
        if (com.ruoyi.common.utils.StringUtils.isEmpty(dto.getProjectId())) {
            List<String> projectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                    .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
            if (!projectIds.isEmpty()){
                TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, projectIds)
                        .eq(TProjectTeam::getStatus, 1)
                        .orderByDesc(BaseModel::getCreateTime)
                        .last("limit 1").one();
                dto.setProjectId(projectTeam.getId());
            }
        }
        strainValidationDataService.save(dto);
        if (dto.getStatus()==2){
        if (dto.getIsDraft()==0){
            dto.setStatus(1);
        }else{
            dto.setStatus(3);
        }
        if (dto.getStatus()==1){
            // 新增消息
            TNotice tNotice = new TNotice();
            List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                    .eq(TProjectTeamStaff::getRoleType, 2)
            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                    .eq(TProjectTeamStaff::getRoleType, 3)
                    .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
            TProjectTeam one = projectTeamService.lambdaQuery().in(TProjectTeam::getId, collect)
            if (allProjectIds.isEmpty()){
                allProjectIds.add("0");
            }
            TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
                    .eq(TProjectTeam::getStatus, 1)
                    .orderByDesc(BaseModel::getCreateTime).last("limit 1").one();
            TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery()
                    .eq(TProjectTeamStaff::getTeamId, one.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
            tNotice.setUserId(one1.getUserId());
            TProjectTeamStaff tProjectTeamStaff = projectTeamStaffService.lambdaQuery()
                    .eq(TProjectTeamStaff::getTeamId, projectTeam.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
            tNotice.setUserId(tProjectTeamStaff.getUserId());
            tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
            tNotice.setStatus(1);
            StringBuilder stringBuilder = new StringBuilder();
            StringBuilder content = new StringBuilder();
            switch (dto.getStrainType()){
                case 1:
                    stringBuilder.append( "【原始细胞库验证资料】");
                    content.append( "【原始细胞库验证资料】");
                    break;
                case 2:
                     stringBuilder.append("【主细胞库验证资料】");
                     content.append("【主细胞库验证资料】");
                    break;
            }
            tNotice.setNoticeContent("您有【1】条"+stringBuilder+"等待确认;");
            tNotice.setNoticeContent("您有【1】条"+content+"等待确认;");
            tNotice.setDataId(dto.getId());
            tNotice.setNoticeType(6);
            noticeService.save(tNotice);
@@ -131,6 +189,7 @@
        strainValidationDataService.updateById(dto);
        return R.ok();
    }
    @Log(title = "菌种验证数据资料-确认验证资料", businessType = BusinessType.INSERT)
    @ApiOperation(value = "确认验证资料",response = AddStrainValidationDataDetailDTO.class)
    @PostMapping(value = "/api/t-strain-validation-data/confirm")
@@ -142,9 +201,39 @@
        }
        dto.setStatus(2);
        strainValidationDataService.updateById(dto);
        // 先删除该 dataId 的所有数据
        LambdaQueryWrapper<TStrainValidationDataDetail> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(TStrainValidationDataDetail::getDataId, dto.getId());
        strainValidationDataDetailService.remove(wrapper);
        strainValidationDataDetailService.saveBatch(list);
        return R.ok();
    }
    @Log(title = "菌种验证数据资料-存草稿", businessType = BusinessType.INSERT)
    @ApiOperation(value = "确认验证资料",response = AddStrainValidationDataDetailDTO.class)
    @PostMapping(value = "/api/t-strain-validation-data/saveDraf")
    public R<Boolean> saveDraf(@RequestBody String param) {
        AddStrainValidationDataDetailDTO dto = JSON.parseObject(param,AddStrainValidationDataDetailDTO.class);
        List<TStrainValidationDataDetail> list = dto.getList();
        for (TStrainValidationDataDetail tStrainValidationDataDetail : list) {
            tStrainValidationDataDetail.setDataId(dto.getId());
        }
        dto.setIsDraft(1);
        strainValidationDataService.updateById(dto);
        // 先删除该 dataId 的所有数据
        LambdaQueryWrapper<TStrainValidationDataDetail> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(TStrainValidationDataDetail::getDataId, dto.getId());
        strainValidationDataDetailService.remove(wrapper);
        strainValidationDataDetailService.saveBatch(list);
        return R.ok();
    }
    @Resource
    private TProjectTeamMapper tProjectTeamMapper;
    /**
     * 查看菌种验证数据资料详情
@@ -157,6 +246,29 @@
        BeanUtils.copyProperties(strainValidationData,res);
        List<TStrainValidationDataDetail> list = strainValidationDataDetailService.lambdaQuery().eq(TStrainValidationDataDetail::getDataId, id).list();
        res.setList(list);
        if (com.ruoyi.common.utils.StringUtils.isNotEmpty(strainValidationData.getProjectId())) {
            TProjectTeam tProjectTeam = tProjectTeamMapper.selectById(strainValidationData.getProjectId());
            if (tProjectTeam != null) {
                List<TProjectTeamStaff> listProsd = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, tProjectTeam.getId()).list();
                StringBuilder staffNames = new StringBuilder();
                for (TProjectTeamStaff tProjectTeamStaff : listProsd) {
                    SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tProjectTeamStaff.getUserId()));
                    if (sysUser!=null){
                        staffNames.append(sysUser.getNickName()).append(",");
                    }
                }
                if (StringUtils.hasLength(staffNames.toString())){
                    tProjectTeam.setStaff(staffNames.substring(0, staffNames.toString().length() - 1));
                }
                List<TProjectTeam> tProjectTeamList = new ArrayList<>();
                tProjectTeamList.add(tProjectTeam);
                res.setTProjectTeamList(tProjectTeamList);
                res.setProjectName(tProjectTeam.getTeamName());
            }
        }
        return R.ok(res);
    }
    @Log(title = "主细胞-删除菌种验证数据资料", businessType = BusinessType.DELETE)