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.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.common.utils.bean.BeanUtils;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.*;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.TStrainReportProjectQuery;
import com.ruoyi.system.query.TStrainReportQuery;
import com.ruoyi.system.query.TTrainLibraryDetailQuery;
import com.ruoyi.system.query.TTrainLibraryQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.*;
import io.swagger.annotations.ApiOperation;
import jdk.nashorn.internal.parser.Token;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.sql.Array;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 菌种报告库 前端控制器
*
*
* @author 无关风月
* @since 2025-04-12
*/
@RestController
@RequestMapping("")
public class TStrainReportController {
@Resource
private TStrainReportService strainReportService;
@Resource
private TStrainReportDetailService strainReportDetailService;
@Resource
private ISysUserService sysUserService;
@Resource
private TokenService tokenService;
@Resource
private TProjectTeamService projectTeamService;
@Resource
private TProjectTeamStaffService projectTeamStaffService;
//@PreAuthorize("@ss.hasPermi('system:strainReport:pageListAll')")
@ApiOperation(value = "菌种报告库分页列表查询",tags = "菌种报告库",response = TStrainReportQuery.class)
@PostMapping(value = "/api/t-strain-report/pageListAll")
public R> pageListAll(@RequestBody String param) {
LoginUser loginUser = tokenService.getLoginUser();
SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId());
List projectIds = new ArrayList<>();
if (!sysUser.getRoleType().equals("1")){
// 查询和自己相关的项目组id
List collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, sysUser.getUserId()).list()
.stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
if (collect.isEmpty()){
collect.add("0");
}
projectIds = collect;
}
TStrainReportQuery query = JSON.parseObject(param, TStrainReportQuery.class);
if (StringUtils.hasLength(query.getTime())){
query.setStartTime(query.getTime().split(" - ")[0]);
query.setEndTime(query.getTime().split(" - ")[1]);
}
query.setProjectIds(projectIds);
return R.ok(strainReportService.pageListAll(query));
}
//@PreAuthorize("@ss.hasPermi('system:strainReport:list')")
@ApiOperation(value = "获取菌种报告库操作评定分页列表",tags = "菌种报告库操作评定-菌种实验员",response = TStrainReportQuery.class)
@PostMapping(value = "/api/t-strain-report/pageList")
public R> pageList(@RequestBody String param) {
TStrainReportQuery query = JSON.parseObject(param, TStrainReportQuery.class);
if (StringUtils.hasLength(query.getTime())){
query.setStartTime(query.getTime().split(" - ")[0]);
query.setEndTime(query.getTime().split(" - ")[1]);
}
LoginUser loginUser = tokenService.getLoginUser();
SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId());
query.setUserId(sysUser.getUserId()+"");
if (StringUtils.hasLength(query.getEvaluateName())){
List strings = new ArrayList<>();
List sysUser1 = sysUserService.selectUserByUserNameLike(query.getEvaluateName());
if (sysUser1.isEmpty()){
strings.add("0");
}else{
strings = sysUser1.stream().map(SysUser::getUserId).map(String::valueOf).collect(Collectors.toList());
query.setEvaluateId(strings);
}
}
return R.ok(strainReportService.pageList(query));
}
//@PreAuthorize("@ss.hasPermi('system:strainReport:detail')")
@ApiOperation(value = "查看菌种库操作评定详情",tags = "菌种库操作评定-菌种实验员")
@GetMapping(value = "/open/t-strain-report/getDetailById")
public R getDetailById(@RequestParam String id) {
TStrainReportDetailVO tStrainReportDetailVO = new TStrainReportDetailVO();
TStrainReport strainReport = strainReportService.getById(id);
TStrainReportDetail one = strainReportDetailService.getOne(new LambdaQueryWrapper()
.eq(TStrainReportDetail::getReportId, strainReport.getId())
.eq(TStrainReportDetail::getEvaluateHumanType, 1)
.eq(TStrainReportDetail::getExperimentId, tokenService.getLoginUser().getUserId()));
if (one!=null){
tStrainReportDetailVO.setEvaluate(one.getEvaluate());
}
BeanUtils.copyProperties(strainReport, tStrainReportDetailVO);
if (strainReport.getEvaluateId() != null){
SysUser sysUser = sysUserService.selectUserById(Long.valueOf(strainReport.getEvaluateId()));
if (sysUser != null){
tStrainReportDetailVO.setEvaluateName(sysUser.getNickName());
}
}
return R.ok(tStrainReportDetailVO);
}
//@PreAuthorize("@ss.hasPermi('system:strainReportProject:pageListProject')")
@ApiOperation(value = "获取菌种项目组评定分页列表",tags = "菌种项目组评定表",response = TStrainReportProjectQuery.class)
@PostMapping(value = "/api/t-strain-report/pageListProject")
public R> pageListProject(@RequestBody String param) {
TStrainReportProjectQuery query = JSON.parseObject(param, TStrainReportProjectQuery.class);
if (StringUtils.hasLength(query.getTime())){
query.setStartTime(query.getTime().split(" - ")[0]);
query.setEndTime(query.getTime().split(" - ")[1]);
}
LoginUser loginUser = tokenService.getLoginUser();
SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId());
List projectIds = new ArrayList<>();
if (!sysUser.getRoleType().equals("1")){
// 查询和自己相关的项目组id
List collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, sysUser.getUserId()).list()
.stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
if (collect.isEmpty()){
collect.add("0");
}
projectIds = collect;
}
query.setProjectIds(projectIds);
return R.ok(strainReportService.pageListProject(query));
}
@ApiOperation(value = "菌种项目组评定详情",tags = "菌种项目组评定表")
@GetMapping(value = "/open/t-strain-report/getDetailByIdProject")
public R getDetailByIdProject(@RequestParam String id) {
TProjectTeam byId = projectTeamService.getById(id);
TStrainReportDetailProjectVO tStrainReportDetailVO = new TStrainReportDetailProjectVO();
LoginUser loginUser = tokenService.getLoginUser();
SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId());
List tStrainReports = strainReportService.list(new LambdaQueryWrapper()
.eq(TStrainReport::getStatus,3).eq(TStrainReport::getProjectId,id));
List collect7 = tStrainReports.stream().map(TStrainReport::getId).collect(Collectors.toList());
if (collect7.isEmpty())collect7.add("0");
List tStrainReportDetails = strainReportDetailService
.list(new LambdaQueryWrapper().in(TStrainReportDetail::getReportId,collect7)
.orderByDesc(TStrainReportDetail::getCreateTime));
BigDecimal sum = new BigDecimal("0");
BigDecimal sum1 = new BigDecimal("0");
BigDecimal sum2 = new BigDecimal("0");
Integer temp = 0;
for (TStrainReport tStrainReport : tStrainReports) {
List collect1 = tStrainReportDetails.stream()
.filter(e -> e.getReportId().equals(tStrainReport.getId())&&
e.getEvaluateHumanType()==1).collect(Collectors.toList());
List collect2 = tStrainReportDetails.stream()
.filter(e -> e.getReportId().equals(tStrainReport.getId())&&
e.getEvaluateHumanType()==2).collect(Collectors.toList());
// 菌种工程积分
sum1 = collect2.stream()
.filter(e -> e.getEvaluateHumanType().equals(1))
.map(TStrainReportDetail::getEvaluateTotal)
.reduce(BigDecimal::add)
.orElse(BigDecimal.ZERO);
// 菌种实验员积分
sum2 = collect1.stream()
.filter(e -> e.getEvaluateHumanType().equals(2))
.map(TStrainReportDetail::getEvaluateTotal)
.reduce(BigDecimal::add)
.orElse(BigDecimal.ZERO);
List collect3 = tStrainReportDetails.stream().filter(e -> e.getReportType() == 1).collect(Collectors.toList());
for (TStrainReportDetail tStrainReportDetail : collect3) {
// 根据评定等级统计失败次数
if (StringUtils.hasLength(tStrainReportDetail.getEvaluate())&& tStrainReportDetail.getEvaluate().split(",").length>=5){
if (tStrainReportDetail.getEvaluate().split(",")[4].equals("2")){
temp++;
}
}
}
}
tStrainReportDetailVO.setTeamIntegral(sum);
tStrainReportDetailVO.setEngineerIntegral(sum1);
tStrainReportDetailVO.setExperimenterIntegral(sum2);
tStrainReportDetailVO.setFailCount(temp);
List collect1 = tStrainReports.stream().filter(e -> e.getProjectId().equals(byId.getId())).collect(Collectors.toList());
if (!collect1.isEmpty()){
tStrainReportDetailVO.setEndTime(collect1.get(0).getEvaluateTime());
}
tStrainReportDetailVO.setStartTime(byId.getCreateTime());
TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, byId.getId())
.eq(TProjectTeamStaff::getRoleType, 2).one();
List strings = new ArrayList<>();
List tStrainReportDetailExperimentVOS = new ArrayList<>();
if (sysUser.getRoleType().equals("4")){
TStrainReportDetailExperimentVO tStrainReportDetailExperimentVO = new TStrainReportDetailExperimentVO();
tStrainReportDetailExperimentVO.setUserName(sysUser.getNickName());
tStrainReportDetailExperimentVO.setHandleCount((int) tStrainReportDetails.stream().filter(e -> e.getExperimentId().equals(sysUser.getUserId() + "")).count());
BigDecimal handleIntegral = tStrainReportDetails.stream()
.filter(e -> e.getEvaluateHumanType().equals(1)&&e.getExperimentId().equals(sysUser.getUserId()+""))
.map(TStrainReportDetail::getEvaluateTotal)
.reduce(BigDecimal::add)
.orElse(BigDecimal.ZERO);
tStrainReportDetailExperimentVO.setHandleIntegral(handleIntegral);
List collect = tStrainReportDetails.stream().filter(e -> e.getExperimentId().equals(sysUser.getUserId() + "")).collect(Collectors.toList());
if (!collect.isEmpty()){
tStrainReportDetailExperimentVO.setHandleStartTime(collect.get(0).getCreateTime());
}
tStrainReportDetailExperimentVOS.add(tStrainReportDetailExperimentVO);
tStrainReportDetailVO.setDetailExperimentVOS(tStrainReportDetailExperimentVOS);
}else{
List collect6 = tStrainReportDetails.stream()
.filter(e -> e.getEvaluateHumanType() == 2&&
e.getExperimentId().equals(one1.getUserId())).collect(Collectors.toList());
if (collect6.isEmpty()){
TStrainReportDetailEngineerVO tStrainReportDetailEngineerVO = new TStrainReportDetailEngineerVO();
tStrainReportDetailEngineerVO.setInnovateCount(0);
tStrainReportDetailEngineerVO.setInnovateIntegral(BigDecimal.ZERO);
tStrainReportDetailEngineerVO.setRegulationCount(0);
tStrainReportDetailEngineerVO.setRegulationIntegral(BigDecimal.ZERO);
tStrainReportDetailEngineerVO.setHandleCount(0);
tStrainReportDetailEngineerVO.setHandleIntegral(BigDecimal.ZERO);
tStrainReportDetailVO.setDetailEngineerVO(tStrainReportDetailEngineerVO);
List userIds = new ArrayList<>();
List tStrainReportDetailExperimentVOS1 = new ArrayList<>();
List collect = tStrainReportDetails.stream().filter(e -> e.getEvaluateHumanType().equals(1)).collect(Collectors.toList());
for (TStrainReportDetail tStrainReportDetail : collect) {
if (userIds.contains(tStrainReportDetail.getExperimentId())){
continue;
}
userIds.add(tStrainReportDetail.getExperimentId());
TStrainReportDetailExperimentVO tStrainReportDetailExperimentVO = new TStrainReportDetailExperimentVO();
tStrainReportDetailExperimentVO.setUserName(sysUserService.selectUserById(Long.valueOf(tStrainReportDetail.getExperimentId())).getNickName());
tStrainReportDetailExperimentVO.setHandleCount((int) collect.stream().filter(e -> e.getExperimentId().equals(tStrainReportDetail.getExperimentId())).count());
BigDecimal handleIntegral = collect.stream()
.filter(e -> e.getEvaluateHumanType().equals(1)&&e.getExperimentId().equals(sysUser.getUserId()+""))
.map(TStrainReportDetail::getEvaluateTotal)
.reduce(BigDecimal::add)
.orElse(BigDecimal.ZERO);
tStrainReportDetailExperimentVO.setHandleIntegral(handleIntegral);
List collect9 = collect.stream().filter(e -> e.getExperimentId().equals(sysUser.getUserId()+"")).collect(Collectors.toList());
if (!collect9.isEmpty()){
tStrainReportDetailExperimentVO.setHandleEndTime(collect9.get(collect9.size()-1).getCreateTime());
}
tStrainReportDetailExperimentVO.setHandleStartTime(byId.getCreateTime());
tStrainReportDetailExperimentVOS1.add(tStrainReportDetailExperimentVO);
}
tStrainReportDetailVO.setDetailExperimentVOS(tStrainReportDetailExperimentVOS1);
}else{
List collect2 = collect6.stream()
.filter(e -> e.getEvaluateHumanType().equals(2) && e.getExperimentId().equals(one1.getUserId())).collect(Collectors.toList());
TStrainReportDetailEngineerVO tStrainReportDetailEngineerVO = new TStrainReportDetailEngineerVO();
tStrainReportDetailEngineerVO.setInnovateCount((int)collect2.stream().filter(e->e.getEvaluateType().equals(1)).count());
tStrainReportDetailEngineerVO.setInnovateIntegral(collect2.stream().filter(e->e.getEvaluateType().equals(1)).map(TStrainReportDetail::getEvaluateTotal).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
List collect3 = collect2.stream().filter(e -> e.getEvaluateType().equals(1)).collect(Collectors.toList());
if (!collect3.isEmpty()){
tStrainReportDetailEngineerVO.setInnovateStartTime(collect3.get(collect3.size()-1).getCreateTime());
}
tStrainReportDetailEngineerVO.setInnovateEndTime(byId.getCreateTime());
tStrainReportDetailEngineerVO.setRegulationCount((int)collect2.stream().filter(e->e.getEvaluateType().equals(2)).count());
tStrainReportDetailEngineerVO.setRegulationIntegral(collect2.stream().filter(e->e.getEvaluateType().equals(2)).map(TStrainReportDetail::getEvaluateTotal).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
List collect4 = collect2.stream().filter(e -> e.getEvaluateType().equals(2)).collect(Collectors.toList());
if (!collect4.isEmpty()){
tStrainReportDetailEngineerVO.setRegulationStartTime(collect4.get(collect4.size()-1).getCreateTime());
}
tStrainReportDetailEngineerVO.setRegulationEndTime(byId.getCreateTime());
tStrainReportDetailEngineerVO.setHandleCount((int)collect2.stream().filter(e->e.getReportType().equals(1)).count());
tStrainReportDetailEngineerVO.setHandleIntegral(collect2.stream().filter(e->e.getReportType().equals(1)).map(TStrainReportDetail::getEvaluateTotal).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
List collect5 = collect2.stream().filter(e->e.getReportType().equals(1)).collect(Collectors.toList());
if (!collect5.isEmpty()){
tStrainReportDetailEngineerVO.setHandleStartTime(collect5.get(collect5.size()-1).getCreateTime());
}
tStrainReportDetailEngineerVO.setHandleEndTime(byId.getCreateTime());
tStrainReportDetailVO.setDetailEngineerVO(tStrainReportDetailEngineerVO);
List userIds = new ArrayList<>();
List tStrainReportDetailExperimentVOS1 = new ArrayList<>();
List collect = tStrainReportDetails.stream().filter(e -> e.getEvaluateHumanType().equals(1)).collect(Collectors.toList());
for (TStrainReportDetail tStrainReportDetail : collect) {
if (userIds.contains(tStrainReportDetail.getExperimentId())){
continue;
}
userIds.add(tStrainReportDetail.getExperimentId());
TStrainReportDetailExperimentVO tStrainReportDetailExperimentVO = new TStrainReportDetailExperimentVO();
tStrainReportDetailExperimentVO.setUserName(sysUserService.selectUserById(Long.valueOf(tStrainReportDetail.getExperimentId())).getNickName());
tStrainReportDetailExperimentVO.setHandleCount((int) collect.stream().filter(e -> e.getExperimentId().equals(tStrainReportDetail.getExperimentId())).count());
BigDecimal handleIntegral = collect.stream()
.filter(e -> e.getEvaluateHumanType().equals(1)&&e.getExperimentId().equals(sysUser.getUserId()+""))
.map(TStrainReportDetail::getEvaluateTotal)
.reduce(BigDecimal::add)
.orElse(BigDecimal.ZERO);
tStrainReportDetailExperimentVO.setHandleIntegral(handleIntegral);
List collect9 = collect.stream().filter(e -> e.getExperimentId().equals(sysUser.getUserId()+"")).collect(Collectors.toList());
if (!collect9.isEmpty()){
tStrainReportDetailExperimentVO.setHandleEndTime(collect9.get(collect9.size()-1).getCreateTime());
}
tStrainReportDetailExperimentVO.setHandleStartTime(byId.getCreateTime());
tStrainReportDetailExperimentVOS1.add(tStrainReportDetailExperimentVO);
}
tStrainReportDetailVO.setDetailExperimentVOS(tStrainReportDetailExperimentVOS1);
}
}
return R.ok(tStrainReportDetailVO);
}
@Resource
private TNoticeService noticeService;
/**
* 新增报告
*/
//@PreAuthorize("@ss.hasPermi('system:strainReport:add')")
@Log(title = "菌种库报告管理-新增报告", businessType = BusinessType.INSERT)
@ApiOperation(value = "新增报告",tags = "菌种报告库",response = TStrainReportDTO.class)
@PostMapping(value = "/api/t-strain-report/add")
public R add(@RequestBody String param) {
int size = strainReportService.lambdaQuery().list().size();
TStrainReportDTO dto = JSON.parseObject(param,TStrainReportDTO.class);
dto.setStatus(1);
TProjectTeam projectTeam = projectTeamService.getById(dto.getProjectId());
dto.setReportCode(projectTeam.getTeamName()+" - S"+dto.getReportType()+" - "+String.format("%03d", size+1));
dto.setCommitId(tokenService.getLoginUser().getUserId()+"");
dto.setCommitTime(LocalDateTime.now());
strainReportService.save(dto);
TStrainReportDetail tStrainReportDetail = new TStrainReportDetail();
tStrainReportDetail.setReportId(dto.getId());
tStrainReportDetail.setEvaluateId(tokenService.getLoginUser().getUserId()+"");
tStrainReportDetail.setExperimentId(dto.getExperimentId());
tStrainReportDetail.setEvaluate(dto.getEvaluate());
tStrainReportDetail.setEvaluateTotal(dto.getEvaluateTotal());
tStrainReportDetail.setEvaluateHumanType(1);
tStrainReportDetail.setReportType(dto.getReportType());
tStrainReportDetail.setEvaluateType(dto.getEvaluateType());
strainReportDetailService.save(tStrainReportDetail);
if (dto.getIsDraft()==0){
// 新增消息
TNotice tNotice = new TNotice();
TProjectTeamStaff one = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, dto.getProjectId())
.eq(TProjectTeamStaff::getRoleType, 1).last("limit 1").one();
tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
tNotice.setUserId(one.getUserId());
tNotice.setStatus(1);
tNotice.setNoticeContent("您有【1】条【菌种报告】【报告库"+dto.getReportType()+"】等待审核");
tNotice.setDataId(dto.getId());
tNotice.setNoticeType(1);
noticeService.save(tNotice);
// 新增消息
TNotice tNotice1 = new TNotice();
TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, dto.getProjectId())
.eq(TProjectTeamStaff::getRoleType, 3).last("limit 1").one();
tNotice1.setCommitId(tokenService.getLoginUser().getUserId()+"");
tNotice1.setUserId(one1.getUserId());
tNotice1.setStatus(1);
tNotice1.setNoticeContent("您有【1】条菌种库操作菌种工程师已评定;");
tNotice1.setDataId(dto.getId());
tNotice1.setNoticeType(9);
noticeService.save(tNotice1);
}
return R.ok();
}
/**
* 新增报告
*/
//@PreAuthorize("@ss.hasPermi('system:strainReport:update')")
@Log(title = "菌种库报告管理-编辑报告", businessType = BusinessType.UPDATE)
@ApiOperation(value = "编辑报告",tags = "菌种报告库",response = TStrainReportDTO.class)
@PostMapping(value = "/api/t-strain-report/update")
public R update(@RequestBody String param) {
TStrainReportDTO dto = JSON.parseObject(param,TStrainReportDTO.class);
dto.setStatus(1);
strainReportService.updateById(dto);
TStrainReportDetail tStrainReportDetail = strainReportDetailService.lambdaQuery().eq(TStrainReportDetail::getReportId, dto.getId())
.eq(TStrainReportDetail::getEvaluateHumanType, 1).one();
tStrainReportDetail.setReportId(dto.getId());
tStrainReportDetail.setExperimentId(dto.getExperimentId());
tStrainReportDetail.setEvaluate(dto.getEvaluate());
tStrainReportDetail.setEvaluateTotal(dto.getEvaluateTotal());
tStrainReportDetail.setEvaluateHumanType(1);
strainReportDetailService.updateById(tStrainReportDetail);
if (dto.getIsDraft()==0){
// 新增消息
TNotice tNotice = new TNotice();
TProjectTeamStaff one = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, dto.getProjectId())
.eq(TProjectTeamStaff::getRoleType, 1).last("limit 1").one();
tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
tNotice.setUserId(one.getUserId());
tNotice.setStatus(1);
tNotice.setNoticeContent("您有【1】条【菌种报告】【报告库"+dto.getReportType()+"】等待审核");
tNotice.setDataId(dto.getId());
tNotice.setNoticeType(1);
noticeService.save(tNotice);
}
return R.ok();
}
/**
* 菌种工程师撤销审批
*/
//@PreAuthorize("@ss.hasPermi('system:strainReport:cancelReport')")
@Log(title = "菌种库报告管理-菌种工程师撤销审批", businessType = BusinessType.UPDATE)
@ApiOperation(value = "菌种工程师撤销审批",tags = "菌种报告库")
@PostMapping(value = "/api/t-strain-report/cancelReport")
public R cancelReport(@RequestBody String id) {
TStrainReport strainReport = strainReportService.getById(id);
strainReport.setIsDraft(1);
strainReport.setStatus(1);
strainReportService.updateById(strainReport);
return R.ok();
}
/**
* 菌种工程师撤销审批
*/
//@PreAuthorize("@ss.hasPermi('system:strainReport:auditReport')")
@Log(title = "菌种库报告管理-菌种审批人审批", businessType = BusinessType.UPDATE)
@ApiOperation(value = "菌种审批人审批",tags = "菌种报告库",response = TStrainReportAuditDTO.class)
@PostMapping(value = "/api/t-strain-report/auditReport")
public R auditReport(@RequestBody String param) {
LoginUser loginUser = tokenService.getLoginUser();
if (loginUser==null){
return R.fail(401,"登陆失效");
}
TStrainReportAuditDTO dto = JSON.parseObject(param,TStrainReportAuditDTO.class);
TStrainReport strainReport = strainReportService.getById(dto.getId());
strainReport.setAuditRemark(dto.getAuditRemark());
strainReport.setAuditId(loginUser.getUserId()+"");
strainReport.setAuditTime(LocalDateTime.now());
strainReport.setStatus(dto.getStatus());
strainReportService.updateById(strainReport);
// 新增消息
TNotice tNotice = new TNotice();
TProjectTeamStaff one = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, strainReport.getProjectId())
.eq(TProjectTeamStaff::getRoleType, 1).last("limit 1").one();
tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
tNotice.setUserId(tokenService.getLoginUser().getUserId()+"");
tNotice.setStatus(1);
tNotice.setNoticeContent("您有【1】条【菌种报告】【报告库"+strainReport.getReportType()+"】等待评定");
tNotice.setDataId(dto.getId());
tNotice.setNoticeType(2);
noticeService.save(tNotice);
// 新增消息
TNotice tNotice1 = new TNotice();
TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, strainReport.getProjectId())
.eq(TProjectTeamStaff::getRoleType, 1).last("limit 1").one();
tNotice1.setCommitId(tokenService.getLoginUser().getUserId()+"");
tNotice1.setUserId(one1.getUserId());
tNotice1.setStatus(1);
String temp=dto.getStatus()==2?"通过":"驳回";
tNotice1.setNoticeContent("您有【1】条【菌种报告】【报告库"+strainReport.getReportType()+"】菌种审批人已操作【" +temp+"】");
tNotice1.setDataId(dto.getId());
tNotice1.setNoticeType(7);
noticeService.save(tNotice1);
return R.ok();
}
/**
*/
//@PreAuthorize("@ss.hasPermi('system:strainReport:auditReport')")
@Log(title = "菌种库报告管理-菌种审批人/超级管理员评定", businessType = BusinessType.UPDATE)
@ApiOperation(value = "菌种审批人/超级管理员评定",tags = "菌种报告库",response = TStrainReportEvaluateDTO.class)
@PostMapping(value = "/api/t-strain-report/evaluateReport")
public R evaluateReport(@RequestBody String param) {
LoginUser loginUser = tokenService.getLoginUser();
if (loginUser==null){
return R.fail(401,"登陆失效");
}
TStrainReportEvaluateDTO dto = JSON.parseObject(param,TStrainReportEvaluateDTO.class);
TStrainReport strainReport = strainReportService.getById(dto.getId());
strainReport.setEvaluateTime(LocalDateTime.now());
strainReport.setEvaluateId(loginUser.getUserId()+"");
strainReport.setStatus(3);
strainReportService.updateById(strainReport);
TStrainReportDetail tStrainReportDetail = new TStrainReportDetail();
tStrainReportDetail.setReportId(strainReport.getId());
tStrainReportDetail.setEvaluate(dto.getEvaluate());
tStrainReportDetail.setEvaluateId(loginUser.getUserId()+"");
// tStrainReportDetail.setDetectionCode(dto.getDetectionCode());
// tStrainReportDetail.setDetectionName(dto.getDetectionName());
tStrainReportDetail.setEvaluateTotal(dto.getEvaluateTotal());
tStrainReportDetail.setExperimentId(strainReport.getCommitId());
tStrainReportDetail.setReportType(strainReport.getReportType());
tStrainReportDetail.setEvaluateHumanType(2);
tStrainReportDetail.setEvaluateType(dto.getEvaluateType());
strainReportDetailService.save(tStrainReportDetail);
// 新增消息
TNotice tNotice1 = new TNotice();
TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, strainReport.getProjectId())
.eq(TProjectTeamStaff::getRoleType, 1).last("limit 1").one();
tNotice1.setCommitId(tokenService.getLoginUser().getUserId()+"");
tNotice1.setUserId(one1.getUserId());
tNotice1.setStatus(1);
tNotice1.setNoticeContent("您有【1】条【菌种报告】【报告库"+strainReport.getReportType()+"】菌种审批人已评定");
tNotice1.setDataId(dto.getId());
tNotice1.setNoticeType(8);
noticeService.save(tNotice1);
return R.ok();
}
/**
* 删除项目组
*/
//@PreAuthorize("@ss.hasPermi('system:projectTeam:delete')")
@Log(title = "菌种报告库-删除菌种报告库", businessType = BusinessType.DELETE)
@ApiOperation(value = "删除菌种报告库",tags = "菌种报告库")
@DeleteMapping(value = "/open/t-strain-report/deleteById")
public R deleteById(@RequestParam String id) {
return R.ok(strainReportService.remove(Wrappers.lambdaQuery(TStrainReport.class).eq(TStrainReport::getId, id)));
}
/**
* 菌种工程师查看报告详情
*/
//@PreAuthorize("@ss.hasPermi('system:strainReport:detail')")
@ApiOperation(value = "查看报告详情",tags = "菌种报告库",response = TStrainReportDetailVO.class)
@GetMapping(value = "/open/t-strain-report/detail")
public R detail(@RequestParam String id) {
TStrainReportDetailVO tStrainReportDetailVO = new TStrainReportDetailVO();
TStrainReport strainReport = strainReportService.getById(id);
if (strainReport.getAuditId()!=null){
SysUser sysUser = sysUserService.selectUserById(Long.valueOf(strainReport.getAuditId()));
if (sysUser!=null){
tStrainReportDetailVO.setAuditName(sysUser.getNickName());
}
}
BeanUtils.copyProperties(strainReport, tStrainReportDetailVO);
TProjectTeam byId = projectTeamService.getById(strainReport.getProjectId());
List list = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, byId.getId()).list();
StringBuilder stringBuilder = new StringBuilder();
for (TProjectTeamStaff tProjectTeamStaff : list) {
SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tProjectTeamStaff.getUserId()));
if (sysUser!=null){
stringBuilder.append(sysUser.getNickName()).append(",");
}
}
if (StringUtils.hasLength(stringBuilder.toString())){
byId.setStaff(stringBuilder.substring(0, stringBuilder.toString().length() - 1));
}
tStrainReportDetailVO.setProjectTeam(byId);
TStrainReportDetail one = strainReportDetailService.lambdaQuery().eq(TStrainReportDetail::getReportId, id)
.eq(TStrainReportDetail::getEvaluateHumanType, 1).one();
tStrainReportDetailVO.setEvaluate(one.getEvaluate());
tStrainReportDetailVO.setEvaluateTotal(one.getEvaluateTotal());
if (strainReport.getEvaluateId()!=null){
tStrainReportDetailVO.setEvaluateName(sysUserService.selectUserById(Long.valueOf(strainReport.getEvaluateId())).getNickName());
}
if (one.getExperimentId()!=null){
tStrainReportDetailVO.setExperimentName(sysUserService.selectUserById(Long.valueOf(one.getExperimentId())).getNickName());
tStrainReportDetailVO.setExperimentId(one.getExperimentId());
}
tStrainReportDetailVO.setReportType(strainReport.getReportType());
if (strainReport.getCommitId()!=null){
tStrainReportDetailVO.setCommitName(sysUserService.selectUserById(Long.valueOf(strainReport.getCommitId())).getNickName());
}
return R.ok(tStrainReportDetailVO);
}
/**
* 菌种工程师查看报告详情
*/
@ApiOperation(value = "查看报告评定详情",tags = "菌种报告库")
@GetMapping(value = "/open/t-strain-report/detailReport")
public R detailReport(@RequestParam String id) {
TStrainReportDetailVO tStrainReportDetailVO = new TStrainReportDetailVO();
TStrainReport strainReport = strainReportService.getById(id);
BeanUtils.copyProperties(strainReport, tStrainReportDetailVO);
TProjectTeam byId = projectTeamService.getById(strainReport.getProjectId());
tStrainReportDetailVO.setProjectTeam(byId);
TStrainReportDetail one = strainReportDetailService.lambdaQuery().eq(TStrainReportDetail::getReportId, id)
.eq(TStrainReportDetail::getEvaluateHumanType, 2).one();
tStrainReportDetailVO.setEvaluate(one.getEvaluate());
tStrainReportDetailVO.setEvaluateTotal(one.getEvaluateTotal());
tStrainReportDetailVO.setEvaluateName(sysUserService.selectUserById(Long.valueOf(strainReport.getEvaluateId())).getNickName());
tStrainReportDetailVO.setExperimentName(sysUserService.selectUserById(Long.valueOf(one.getExperimentId())).getNickName());
tStrainReportDetailVO.setExperimentId(one.getExperimentId());
tStrainReportDetailVO.setReportType(strainReport.getReportType());
tStrainReportDetailVO.setCommitName(sysUserService.selectUserById(Long.valueOf(strainReport.getCommitId())).getNickName());
return R.ok(tStrainReportDetailVO);
}
}