package com.ruoyi.web.controller.api; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.BaseModel; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; 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; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.AddStrainValidationDataDetailVO; import com.ruoyi.system.vo.TBreedingAndPreservationVO; import com.ruoyi.system.vo.TProjectTeamVO; import com.ruoyi.system.vo.TStrainValidationDataVO; import io.swagger.annotations.Api; 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; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** *

* 菌种验证数据资料 前端控制器 *

* * @author 无关风月 * @since 2025-04-12 */ @RestController @RequestMapping("") @Api(tags = "菌种验证数据资料") public class TStrainValidationDataController { @Resource private TStrainValidationDataService strainValidationDataService; @Resource private TStrainValidationDataDetailService strainValidationDataDetailService; @Resource private ISysUserService sysUserService; /** * 菌种验证数据资料分页列表 */ @ApiOperation(value = "菌种验证数据资料-获取菌种验证数据资料分页列表",response = TStrainValidationDataQuery.class) @PostMapping(value = "/api/t-strain-validation-data/pageList") public R> pageList(@RequestBody String param) { TStrainValidationDataQuery query = JSON.parseObject(param, TStrainValidationDataQuery.class); SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); if (sysUser.getRoleType().equals("2")){ List allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId()) .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList()); if (!allProjectIds.isEmpty()){ List 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 allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId()) .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList()); if (!allProjectIds.isEmpty()){ List 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)); } /** * 新增菌种验证数据资料 */ //@PreAuthorize("@ss.hasPermi('system:strainValidationData:add')") @Log(title = "菌种验证数据资料-新增菌种验证数据资料", businessType = BusinessType.INSERT) @ApiOperation(value = "新增菌种验证数据资料",response = AddStrainValidationDataDTO.class) @PostMapping(value = "/api/t-strain-validation-data/add") public R addOriginal(@RequestBody String param) { AddStrainValidationDataDTO dto = JSON.parseObject(param,AddStrainValidationDataDTO.class); if (StringUtils.hasLength(dto.getHandleSignature())){ dto.setHandleTime(LocalDateTime.now()); } if (com.ruoyi.common.utils.StringUtils.isEmpty(dto.getProjectId())) { List 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.getIsDraft()==0){ dto.setStatus(1); }else{ dto.setStatus(3); } if (dto.getStatus()==1){ // 新增消息 TNotice tNotice = new TNotice(); List allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId()) .eq(TProjectTeamStaff::getRoleType, 3) .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList()); 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 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 content = new StringBuilder(); switch (dto.getStrainType()){ case 1: content.append( "【原始细胞库验证资料】"); break; case 2: content.append("【主细胞库验证资料】"); break; } tNotice.setNoticeContent("您有【1】条"+content+"等待确认;"); tNotice.setDataId(dto.getId()); tNotice.setNoticeType(6); noticeService.save(tNotice); } return R.ok(); } @Resource private TProjectTeamService projectTeamService; @Resource private TProjectTeamStaffService projectTeamStaffService; @Resource private TNoticeService noticeService; @Resource private TokenService tokenService; /** * 编辑菌种验证数据资料 */ //@PreAuthorize("@ss.hasPermi('system:strainValidationData:update')") @Log(title = "菌种验证数据资料-编辑菌种验证数据资料", businessType = BusinessType.UPDATE) @ApiOperation(value = "编辑菌种验证数据资料",response = AddStrainValidationDataDTO.class) @PostMapping(value = "/api/t-strain-validation-data/updateOriginal") public R updateOriginal(@RequestBody String param) { AddStrainValidationDataDTO dto = JSON.parseObject(param,AddStrainValidationDataDTO.class); strainValidationDataDetailService.remove(new LambdaQueryWrapper() .eq(TStrainValidationDataDetail::getDataId, dto.getId())); for (TStrainValidationDataDetail tStrainValidationDataDetail : dto.getList()) { tStrainValidationDataDetail.setDataId(dto.getId()); } strainValidationDataDetailService.saveBatch(dto.getList()); dto.setStatus(1); strainValidationDataService.updateById(dto); return R.ok(); } @Log(title = "菌种验证数据资料-确认验证资料", businessType = BusinessType.INSERT) @ApiOperation(value = "确认验证资料",response = AddStrainValidationDataDetailDTO.class) @PostMapping(value = "/api/t-strain-validation-data/confirm") public R confirm(@RequestBody String param) { AddStrainValidationDataDetailDTO dto = JSON.parseObject(param,AddStrainValidationDataDetailDTO.class); List list = dto.getList(); for (TStrainValidationDataDetail tStrainValidationDataDetail : list) { tStrainValidationDataDetail.setDataId(dto.getId()); } dto.setStatus(2); strainValidationDataService.updateById(dto); // 先删除该 dataId 的所有数据 LambdaQueryWrapper 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 saveDraf(@RequestBody String param) { AddStrainValidationDataDetailDTO dto = JSON.parseObject(param,AddStrainValidationDataDetailDTO.class); List list = dto.getList(); for (TStrainValidationDataDetail tStrainValidationDataDetail : list) { tStrainValidationDataDetail.setDataId(dto.getId()); } dto.setIsDraft(1); strainValidationDataService.updateById(dto); // 先删除该 dataId 的所有数据 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TStrainValidationDataDetail::getDataId, dto.getId()); strainValidationDataDetailService.remove(wrapper); strainValidationDataDetailService.saveBatch(list); return R.ok(); } @Resource private TProjectTeamMapper tProjectTeamMapper; /** * 查看菌种验证数据资料详情 */ @ApiOperation(value = "查看菌种验证数据资料详情") @GetMapping(value = "/open/t-strain-validation-data/getDetailById") public R getDetailMainById(@RequestParam String id) { TStrainValidationData strainValidationData = strainValidationDataService.getById(id); if (strainValidationData == null) { return R.fail("菌种验证资料不存在或已删除"); } AddStrainValidationDataDetailVO res = new AddStrainValidationDataDetailVO(); BeanUtils.copyProperties(strainValidationData,res); List 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 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 tProjectTeamList = new ArrayList<>(); tProjectTeamList.add(tProjectTeam); res.setTProjectTeamList(tProjectTeamList); res.setProjectName(tProjectTeam.getTeamName()); } } return R.ok(res); } @Log(title = "主细胞-删除菌种验证数据资料", businessType = BusinessType.DELETE) @ApiOperation(value = "主细胞-删除菌种验证数据资料",response = TPedigreeChartParentDTO.class) @DeleteMapping(value = "/open/t-strain-validation-data/deleteMain") public R deleteMain(@RequestParam String id) { strainValidationDataService.removeById(id); return R.ok(); } @Log(title = "原始细胞-删除菌种验证数据资料", businessType = BusinessType.DELETE) @ApiOperation(value = "原始细胞-删除菌种验证数据资料",response = TPedigreeChartParentDTO.class) @DeleteMapping(value = "/open/t-strain-validation-data/deleteOriginal") public R deleteOriginal(@RequestParam String id) { strainValidationDataService.removeById(id); return R.ok(); } }