无关风月
2025-08-06 053f6187b5f6cda1725ed63df8a8766b5976fb53
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBreedingAndPreservationController.java
@@ -30,6 +30,7 @@
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -71,12 +72,38 @@
    @ApiOperation(value = "菌种选育保藏记录-获取菌种选育保藏记录分页列表",response = TBreedingAndPreservationQuery.class)
    @PostMapping(value = "/api/t-breeding-and-preservation/pageList")
    public R<PageInfo<TBreedingAndPreservationVO>> pageList(@RequestBody String param) {
        LoginUser loginUser = tokenService.getLoginUser();
        if (loginUser==null){
            return R.fail(401,"登录失效");
        }
        SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId());
        TBreedingAndPreservationQuery query = JSON.parseObject(param, TBreedingAndPreservationQuery.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")){
            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(breedingAndPreservationService.pageList(query));
    }
    /**
@@ -91,8 +118,21 @@
            return R.fail(401,"登陆失效");
        }
        TBreedingAndPreservationDTO dto = JSON.parseObject(param,TBreedingAndPreservationDTO.class);
        if (dto.getStatus()==1){
            return R.fail("有菌种待确认,无法提交");
        }
        if (dto.getStatus()==3){
            dto.setIsDraft(1);
        }
        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());
        }
        breedingAndPreservationService.save(dto);
        List<TSeparationOfCultureDishes> separationOfCultureDishesList = dto.getSeparationOfCultureDishesList();
@@ -107,33 +147,41 @@
        observationOfPetriDishesService.saveBatch(observationOfPetriDishes);
        List<TVaccinationSlope> vaccinationSlopes = dto.getVaccinationSlopes();
        for (TVaccinationSlope tSeparationOfCultureDishes : vaccinationSlopes) {
            tSeparationOfCultureDishes.setHandleId(tokenService.getLoginUser().getUserId()+"");
            tSeparationOfCultureDishes.setHandleTime(LocalDateTime.now());
            tSeparationOfCultureDishes.setBreedingPreserveId(dto.getId());
        }
        vaccinationSlopeService.saveBatch(vaccinationSlopes);
        List<TCulturePreservation> culturePreservations = dto.getCulturePreservations();
        for (TCulturePreservation tSeparationOfCultureDishes : culturePreservations) {
            tSeparationOfCultureDishes.setHandleId(tokenService.getLoginUser().getUserId()+"");
            tSeparationOfCultureDishes.setHandleTime(LocalDateTime.now());
            tSeparationOfCultureDishes.setBreedingPreserveId(dto.getId());
        }
        culturePreservationService.saveBatch(culturePreservations);
        if (dto.getStatus()!=null&&dto.getStatus()==2){
            // 新增消息
            TNotice tNotice = new TNotice();
            List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
            List<String> allProjectIds = projectTeamStaffService.lambdaQuery()
                    .eq(TProjectTeamStaff::getTeamId,dto.getProjectId())
                    .eq(TProjectTeamStaff::getRoleType, 2)
                    .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
            TProjectTeam one = projectTeamService.lambdaQuery().in(TProjectTeam::getId, collect)
                    .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());
            if (!allProjectIds.isEmpty()){
                TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
                        .eq(TProjectTeam::getStatus, 1)
                        .orderByDesc(BaseModel::getCreateTime).last("limit 1").one();
                TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery()
                        .eq(TProjectTeamStaff::getTeamId, projectTeam.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
                tNotice.setUserId(projectTeamStaff.getUserId());
            tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
            tNotice.setStatus(1);
            tNotice.setNoticeContent("您有【1】条【菌种选育保藏记录】等待签字入库确认;");
            tNotice.setDataId(dto.getId());
            tNotice.setNoticeType(5);
            noticeService.save(tNotice);
                tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
                tNotice.setStatus(1);
                tNotice.setNoticeContent("您有【1】条【菌种选育保藏记录】等待签字入库确认;");
                tNotice.setDataId(dto.getId());
                tNotice.setNoticeType(5);
                noticeService.save(tNotice);
            }
        }
        return R.ok();
    }
@@ -143,7 +191,6 @@
    private TProjectTeamStaffService projectTeamStaffService;
    @Resource
    private TNoticeService noticeService;
    //@PreAuthorize("@ss.hasPermi('system:breedingAndPreservation:update')")
    @Log(title = "菌种选育保藏记录-编辑选育保藏记录", businessType = BusinessType.UPDATE)
    @ApiOperation(value = "菌种选育保藏记录-编辑选育保藏记录",response = TBreedingAndPreservationDTO.class)
    @PostMapping(value = "/api/t-breeding-and-preservation/update")
@@ -156,6 +203,10 @@
            dto.setIsDraft(1);
        }else{
            dto.setIsDraft(0);
        }
        TBreedingAndPreservation breedingAndPreservationServiceById = breedingAndPreservationService.getById(dto.getId());
        if (breedingAndPreservationServiceById.getStatus()==1){
            return R.fail("该记录已提交,不可编辑!");
        }
        breedingAndPreservationService.updateById(dto);
        List<TSeparationOfCultureDishes> separationOfCultureDishesList = dto.getSeparationOfCultureDishesList();
@@ -172,35 +223,47 @@
        observationOfPetriDishesService.saveBatch(observationOfPetriDishes);
        List<TVaccinationSlope> vaccinationSlopes = dto.getVaccinationSlopes();
        for (TVaccinationSlope vaccinationSlope : vaccinationSlopes) {
            if (dto.getStatus()==1&&!StringUtils.hasLength(vaccinationSlope.getPreserveId())){
                return R.fail("接种斜面记录未确认,不能提交");
            }
            vaccinationSlope.setBreedingPreserveId(dto.getId());
        }
        vaccinationSlopeService.remove(new LambdaQueryWrapper<TVaccinationSlope>().eq(TVaccinationSlope::getBreedingPreserveId, dto.getId()));
        vaccinationSlopeService.saveBatch(vaccinationSlopes);
        List<TCulturePreservation> culturePreservations = dto.getCulturePreservations();
        for (TCulturePreservation tSeparationOfCultureDishes : culturePreservations) {
            tSeparationOfCultureDishes.setBreedingPreserveId(dto.getId());
        }
        culturePreservationService.remove(new LambdaQueryWrapper<TCulturePreservation>().eq(TCulturePreservation::getBreedingPreserveId, dto.getId()));
        for (TCulturePreservation culturePreservation : culturePreservations) {
            if (dto.getStatus()==1&&!StringUtils.hasLength(culturePreservation.getPreserveId())){
                return R.fail("菌种保藏记录未确认,不能提交");
            }
            culturePreservation.setBreedingPreserveId(dto.getId());
        }
        culturePreservationService.saveBatch(culturePreservations);
        if (dto.getStatus()==2){
            // 新增消息
            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)
                    .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());
            if (!allProjectIds.isEmpty()){
                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, projectTeam.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
                tNotice.setUserId(one1.getUserId());
            tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
            tNotice.setStatus(1);
            tNotice.setNoticeContent("您有【1】条【菌种选育保藏记录】等待签字入库确认;");
            tNotice.setDataId(dto.getId());
            tNotice.setNoticeType(6);
            noticeService.save(tNotice);
                tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
                tNotice.setStatus(1);
                tNotice.setNoticeContent("您有【1】条【菌种选育保藏记录】等待签字入库确认;");
                tNotice.setDataId(dto.getId());
                tNotice.setNoticeType(6);
                noticeService.save(tNotice);
            }
        }
        return R.ok();
    }
@@ -211,11 +274,11 @@
        Long userId = tokenService.getLoginUser().getUserId();
        TConfirmBreedingAndPreservationDTO dto = JSON.parseObject(param,TConfirmBreedingAndPreservationDTO.class);
        TVaccinationSlope byId = vaccinationSlopeService.getById(dto.getId());
        byId.setPreserveId(userId+"");
        byId.setPreserveTime(LocalDateTime.now());
        byId.setPreserveSignature(dto.getPreserveSignature());
        vaccinationSlopeService.updateById(byId);
        TVaccinationSlope vaccinationSlope = vaccinationSlopeService.getById(dto.getId());
        vaccinationSlope.setPreserveId(userId+"");
        vaccinationSlope.setPreserveTime(LocalDateTime.now());
        vaccinationSlope.setPreserveSignature(dto.getPreserveSignature());
        vaccinationSlopeService.updateById(vaccinationSlope);
        return R.ok();
    }
    @Log(title = "菌种保藏记录确认入库", businessType = BusinessType.UPDATE)
@@ -224,17 +287,18 @@
    public R<Boolean> culturePreservationsConfirm(@RequestBody String param) {
        Long userId = tokenService.getLoginUser().getUserId();
        TConfirmBreedingAndPreservationDTO dto = JSON.parseObject(param,TConfirmBreedingAndPreservationDTO.class);
        TCulturePreservation byId = culturePreservationService.getById(dto.getId());
        byId.setPreserveId(userId+"");
        byId.setPreserveTime(LocalDateTime.now());
        byId.setPreserveSignature(dto.getPreserveSignature());
        culturePreservationService.updateById(byId);
        TCulturePreservation culturePreservation = culturePreservationService.getById(dto.getId());
        culturePreservation.setPreserveId(userId+"");
        culturePreservation.setPreserveTime(LocalDateTime.now());
        culturePreservation.setPreserveSignature(dto.getPreserveSignature());
        culturePreservationService.updateById(culturePreservation);
        return R.ok();
    }
    //@PreAuthorize("@ss.hasPermi('system:breedingAndPreservation:detail')")
    @ApiOperation(value = "选育保藏记录详情")
    @GetMapping(value = "/open/t-breeding-and-preservation/getDetailById")
    public R<TBreedingAndPreservationDetailVO> getDetailById(@RequestParam String id) {
        List<SysUser> sysUsers = sysUserService.selectAllList();
        TBreedingAndPreservationDetailVO res = new TBreedingAndPreservationDetailVO();
        TBreedingAndPreservation breedingAndPreservation = breedingAndPreservationService.getById(id);
        BeanUtils.copyProperties(breedingAndPreservation, res);
@@ -242,6 +306,20 @@
        List<TObservationOfPetriDishes> observationOfPetriDishes = observationOfPetriDishesService.lambdaQuery().eq(TObservationOfPetriDishes::getBreedingPreserveId, id).list();
        List<TVaccinationSlope> vaccinationSlopes = vaccinationSlopeService.lambdaQuery().eq(TVaccinationSlope::getBreedingPreserveId, id).list();
        List<TCulturePreservation> culturePreservations = culturePreservationService.lambdaQuery().eq(TCulturePreservation::getBreedingPreserveId, id).list();
        for (TCulturePreservation culturePreservation : culturePreservations) {
            SysUser sysUser = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(culturePreservation.getHandleId()))).findFirst()
                    .orElse(null);
            if (sysUser!=null){
                culturePreservation.setHandleName(sysUser.getNickName());
            }
        }
        for (TVaccinationSlope vaccinationSlope : vaccinationSlopes) {
            SysUser sysUser = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(vaccinationSlope.getHandleId()))).findFirst()
                    .orElse(null);
            if (sysUser!=null){
                vaccinationSlope.setHandleName(sysUser.getNickName());
            }
        }
        res.setSeparationOfCultureDishesList(separationOfCultureDishesList);
        res.setObservationOfPetriDishes(observationOfPetriDishes);
        res.setVaccinationSlopes(vaccinationSlopes);