xuhy
18 小时以前 6ae35089a05b58dc31c243b9bb4f6a80b20c3a7b
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TResultWorkEvaluateController.java
@@ -12,15 +12,16 @@
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.TQaTestItemDTO;
import com.ruoyi.system.dto.TResultWorkEvaluateDTO;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.ResultEvaluateChemistTesterQuery;
import com.ruoyi.system.query.TProjectApprovalReportQuery;
import com.ruoyi.system.query.TQaTestItemReportQuery;
import com.ruoyi.system.query.TResultWorkEvaluateQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@@ -28,7 +29,6 @@
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -41,7 +41,7 @@
 */
@Api(tags = "实验结果工作评定管理")
@RestController
@RequestMapping("/t-result-work-evaluate")
@RequestMapping("")
public class TResultWorkEvaluateController {
    @Resource
    private TResultWorkEvaluateService tResultWorkEvaluateService;
@@ -64,28 +64,139 @@
    private TProjectProposalService projectProposalService;
    @Resource
    private TQaProduceReportService qaProduceReportService;
    private final TProjectTeamService projectTeamService;
    private final TProjectTeamStaffService projectTeamStaffService;
    private final ISysUserService sysUserService;
    @Resource
    private TQaTestItemService qaTestItemService;
    @Autowired
    public TResultWorkEvaluateController(TProjectTeamService projectTeamService, TProjectTeamStaffService projectTeamStaffService, ISysUserService sysUserService) {
        this.projectTeamService = projectTeamService;
        this.projectTeamStaffService = projectTeamStaffService;
        this.sysUserService = sysUserService;
    private TProjectTeamService projectTeamService;
    @Autowired
    private TProjectTeamStaffService projectTeamStaffService;
    @Autowired
    private ISysUserService sysUserService;
    @Autowired
    private TExperimentDispatchParticipantsService experimentDispatchParticipantsService;
    /**
     * 获取化验师工作评定分页列表
     */
    //@PreAuthorize("@ss.hasPermi('system:resultWorkEvaluate:list')")
    @ApiOperation(value = "获取化验师工作评定分页列表",response = TResultWorkEvaluateQuery.class)
    @PostMapping(value = "/api/t-result-work-evaluate/chemistEvaluateList")
    public R<PageInfo<TResultWorkEvaluateVO>> chemistEvaluateList(@RequestBody String param) {
        TResultWorkEvaluateQuery query = JSON.parseObject(param, TResultWorkEvaluateQuery.class);
        Long userId = tokenService.getLoginUser().getUserId();
        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
        if(roleType != 1){
            // 查询用户所在项目组
            List<TProjectTeamStaff> projectTeamStaffs = projectTeamStaffService.list(Wrappers.lambdaQuery(TProjectTeamStaff.class)
                    .eq(TProjectTeamStaff::getUserId, userId));
            if(projectTeamStaffs.size() > 0){
                // 查询项目组id
                List<String> teamIds = projectTeamStaffs.stream().map(TProjectTeamStaff::getTeamId).distinct().collect(Collectors.toList());
                query.setTeamIds(teamIds);
            }
        }
        return R.ok(tResultWorkEvaluateService.chemistEvaluateList(query));
    }
    /**
     * 添加QA检测项管理管理
     * 获取实验员工作评定分页列表
     */
    //@PreAuthorize("@ss.hasPermi('system:resultWorkEvaluate:list')")
    @ApiOperation(value = "获取实验员工作评定分页列表",response = TProjectApprovalReportQuery.class)
    @PostMapping(value = "/api/t-result-work-evaluate/testerEvaluateList")
    public R<PageInfo<TResultWorkEvaluateVO>> testerEvaluateList(@RequestBody String param) {
        TResultWorkEvaluateQuery query = JSON.parseObject(param, TResultWorkEvaluateQuery.class);
        Long userId = tokenService.getLoginUser().getUserId();
        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
        if(roleType != 1){
            // 查询用户所在项目组
            List<TProjectTeamStaff> projectTeamStaffs = projectTeamStaffService.list(Wrappers.lambdaQuery(TProjectTeamStaff.class)
                    .eq(TProjectTeamStaff::getUserId, userId));
            if(projectTeamStaffs.size() > 0){
                // 查询项目组id
                List<String> teamIds = projectTeamStaffs.stream().map(TProjectTeamStaff::getTeamId).distinct().collect(Collectors.toList());
                query.setTeamIds(teamIds);
            }
        }
        return R.ok(tResultWorkEvaluateService.testerEvaluateList(query));
    }
    /**
     * 新增化验师、实验员工作评定
     */
    //@PreAuthorize("@ss.hasPermi('system:resultWorkEvaluate:add')")
    @Log(title = "QA检测项管理信息-新增QA检测项管理", businessType = BusinessType.INSERT)
    @ApiOperation(value = "添加QA检测项管理", response = TQaTestItemDTO.class)
    @PostMapping(value = "/api/t-qa-test-item/add")
    @Log(title = "实验结果工作评定管理-新增化验师、实验员工作评定", businessType = BusinessType.INSERT)
    @ApiOperation(value = "新增化验师、实验员工作评定", response = TQaTestItemDTO.class)
    @PostMapping(value = "/api/t-result-work-evaluate/add")
    public R<Boolean> add(@RequestBody String param) {
        TQaTestItemDTO dto = JSON.parseObject(param, TQaTestItemDTO.class);
//        resultWorkEvaluateService.save(dto);
        TResultWorkEvaluateDTO dto = JSON.parseObject(param, TResultWorkEvaluateDTO.class);
        tResultWorkEvaluateService.save(dto);
        return R.ok();
    }
    /**
     * 查询可评定的化验师
     */
    @ApiOperation(value = "查询可评定的化验师")
    @GetMapping(value = "/open/t-result-work-evaluate/getEvaluateChemist")
    public R<List<SysUser>> getEvaluateChemist(@RequestParam(value = "nickName",required = false) String nickName,
                                         @RequestParam(value = "dispatchId") String dispatchId) {
        // 查询参与的化验师
        List<TExperimentDispatchParticipants> experimentDispatchParticipants = experimentDispatchParticipantsService.list(Wrappers.lambdaQuery(TExperimentDispatchParticipants.class)
                .eq(TExperimentDispatchParticipants::getDispatchId, dispatchId)
                .eq(TExperimentDispatchParticipants::getRoleType, 4));
        List<Long> userIds = experimentDispatchParticipants.stream().map(TExperimentDispatchParticipants::getUserId).distinct().collect(Collectors.toList());
        if(StringUtils.hasLength(nickName)){
            List<SysUser> sysUsers = sysUserService.selectListByNameAndUserIds(nickName,userIds);
            return R.ok(sysUsers);
        }
        return R.ok();
    }
    /**
     * 查询可评定的实验员
     */
    @ApiOperation(value = "查询可评定的实验员")
    @GetMapping(value = "/open/t-result-work-evaluate/getEvaluateTester")
    public R<List<SysUser>> getEvaluateTester(@RequestParam(value = "nickName",required = false) String nickName,
                                               @RequestParam(value = "dispatchId") String dispatchId) {
        // 查询参与的化验师
        List<TExperimentDispatchParticipants> experimentDispatchParticipants = experimentDispatchParticipantsService.list(Wrappers.lambdaQuery(TExperimentDispatchParticipants.class)
                .eq(TExperimentDispatchParticipants::getDispatchId, dispatchId)
                .eq(TExperimentDispatchParticipants::getRoleType, 5));
        List<Long> userIds = experimentDispatchParticipants.stream().map(TExperimentDispatchParticipants::getUserId).distinct().collect(Collectors.toList());
        if(StringUtils.hasLength(nickName)){
            List<SysUser> sysUsers = sysUserService.selectListByNameAndUserIds(nickName,userIds);
            return R.ok(sysUsers);
        }
        return R.ok();
    }
    /**
     * 查询化验师评定列表
     */
    @ApiOperation(value = "查询化验师评定列表-化验师使用")
    @PostMapping(value = "/api/t-result-work-evaluate/getEvaluateChemistPageList")
    public R<PageInfo<ResultEvaluateChemistTesterVO>> getEvaluateChemistPageList(@RequestBody String param) {
        ResultEvaluateChemistTesterQuery query = JSON.parseObject(param, ResultEvaluateChemistTesterQuery.class);
        // 获取当前用户id
        Long userId = tokenService.getLoginUser().getUserId();
        query.setUserId(userId);
        PageInfo<ResultEvaluateChemistTesterVO> pageInfo = tResultWorkEvaluateService.getEvaluateChemistPageList(query);
        return R.ok(pageInfo);
    }
    /**
     * 查询实验员评定列表
     */
    @ApiOperation(value = "查询实验员评定列表-实验员使用")
    @PostMapping(value = "/api/t-result-work-evaluate/getEvaluateTesterPageList")
    public R<PageInfo<ResultEvaluateChemistTesterVO>> getEvaluateTesterPageList(@RequestBody String param) {
        ResultEvaluateChemistTesterQuery query = JSON.parseObject(param, ResultEvaluateChemistTesterQuery.class);
        // 获取当前用户id
        Long userId = tokenService.getLoginUser().getUserId();
        query.setUserId(userId);
        PageInfo<ResultEvaluateChemistTesterVO> pageInfo = tResultWorkEvaluateService.getEvaluateTesterPageList(query);
        return R.ok(pageInfo);
    }
@@ -323,26 +434,6 @@
        TProjectTeamStaff one = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).eq(TProjectTeamStaff::getRoleType, 3).last("limit 1")
                .one();
        tResultWorkEvaluateDetailVO.setStartTime(projectTeam.getCreateTime());
        List<Long> role4 = projectTeamStaffService.lambdaQuery()
                .eq(TProjectTeamStaff::getRoleType, 4).eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).list()
                .stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
        List<Long> role5 = projectTeamStaffService.lambdaQuery()
                .eq(TProjectTeamStaff::getRoleType, 5).eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).list()
                .stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
        List<SysUser> user4 = new ArrayList<>();
        List<SysUser> user5 = new ArrayList<>();
        for (Long l : role4) {
            SysUser sysUser = sysUserService.selectUserById(l);
            if (sysUser != null) {
                user4.add(sysUser);
            }
        }
        for (Long l : role5) {
            SysUser sysUser = sysUserService.selectUserById(l);
            if (sysUser != null) {
                user5.add(sysUser);
            }
        }
        Long userId = one.getUserId();
        List<TFeasibilityStudyReport> total = feasibilityStudyReportService.lambdaQuery()
@@ -382,9 +473,10 @@
        tResultWorkEvaluateDetailEngineerVO1.setCount(collect1.size());
        tResultWorkEvaluateDetailEngineerVO1.setIntegral(tempDetail1);
        if (!collect1.isEmpty()) {
            tResultWorkEvaluateDetailEngineerVO1.setStartTime(collect1.get(0).getEvaluateTime());
            tResultWorkEvaluateDetailEngineerVO1.setEndTime(collect1.get(collect1.size() - 1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVO1.setStartTime(projectTeam.getCreateTime());
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO1);
@@ -408,11 +500,6 @@
        if (collect6.isEmpty()) {
            collect6.add("0");
        }
        List<Integer> status1 = new ArrayList<>();
        status1.add(-1);
        status1.add(1);
        status1.add(2);
        status1.add(4);
        List<TResultWorkEvaluate> list1 = tResultWorkEvaluateService.lambdaQuery().in(TResultWorkEvaluate::getDispatchId, collect6).list();
        int tempDetail2 = 0;
        for (TResultWorkEvaluate tResultWorkEvaluate : list1) {
@@ -476,9 +563,10 @@
            }
        }
        if (!list1.isEmpty()) {
            tResultWorkEvaluateDetailEngineerVO2.setStartTime(list1.get(0).getEvaluateTime());
            tResultWorkEvaluateDetailEngineerVO2.setEndTime(list1.get(list1.size() - 1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVO2.setStartTime(projectTeam.getCreateTime());
        tResultWorkEvaluateDetailEngineerVO2.setCount(list1.size());
        tResultWorkEvaluateDetailEngineerVO2.setIntegral(tempDetail2);
@@ -497,11 +585,7 @@
        if (collect8.isEmpty()) {
            collect8.add("0");
        }
        List<Integer> status2 = new ArrayList<>();
        status2.add(-1);
        status2.add(1);
        status2.add(2);
        status2.add(4);
        List<TResultWorkEvaluate> list3 = tResultWorkEvaluateService.lambdaQuery().in(TResultWorkEvaluate::getDispatchId, collect8).list();
        int tempDetail3 = 0;
        for (TResultWorkEvaluate tResultWorkEvaluate : list3) {
@@ -694,18 +778,20 @@
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO7 = new TResultWorkEvaluateDetailEngineerVO();
        tResultWorkEvaluateDetailEngineerVO7.setCount(list5.size());
        if (!list5.isEmpty()) {
            tResultWorkEvaluateDetailEngineerVO7.setStartTime(list5.get(0).getAuditTime());
            tResultWorkEvaluateDetailEngineerVO7.setEndTime(list5.get(list5.size() - 1).getAuditTime());
        }
        tResultWorkEvaluateDetailEngineerVO7.setStartTime(projectTeam.getCreateTime());
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO7);
        // todo 临床试验积分
        List<TClinicalTrialPoints> list6 = clinicalTrialPointsService.lambdaQuery().eq(TClinicalTrialPoints::getTeamId, projectTeam.getId()).list();
        // 临床试验积分
        List<TClinicalTrialPoints> list6 = clinicalTrialPointsService.lambdaQuery()
                .eq(TClinicalTrialPoints::getProcessEngineerId, userId)
                .eq(TClinicalTrialPoints::getTeamId, projectTeam.getId()).list();
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO8 = new TResultWorkEvaluateDetailEngineerVO();
        tResultWorkEvaluateDetailEngineerVO8.setCount(list6.size());
        if (!list6.isEmpty()) {
            tResultWorkEvaluateDetailEngineerVO8.setStartTime(list6.get(0).getCreateTime());
            tResultWorkEvaluateDetailEngineerVO8.setEndTime(list6.get(list6.size() - 1).getCreateTime());
        }
        tResultWorkEvaluateDetailEngineerVO8.setStartTime(projectTeam.getCreateTime());
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO8);
        tResultWorkEvaluateDetailVO.setEngineerList(tResultWorkEvaluateDetailEngineerVOS);
        return R.ok(tResultWorkEvaluateDetailVO);
@@ -844,8 +930,9 @@
            }
            if (!list1.isEmpty()) {
                tResultWorkEvaluateDetailEngineerVO2.setEndTime(list1.get(list1.size() - 1).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO2.setStartTime(list1.get(0).getEvaluateTime());
            }
            tResultWorkEvaluateDetailEngineerVO2.setStartTime(projectTeam.getCreateTime());
            tResultWorkEvaluateDetailEngineerVO2.setCount(collect5.size());
            tResultWorkEvaluateDetailEngineerVO2.setIntegral(tempDetail2);
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO2);
@@ -1018,17 +1105,33 @@
            tResultWorkEvaluateDetailEngineerVO4.setCount(list4.size());
            tResultWorkEvaluateDetailEngineerVO4.setIntegral(tempDetail4);
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO4);
            // todo 项目检测项评定
            // 项目检测项评定
            TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO9 = new TResultWorkEvaluateDetailEngineerVO();
            List<TQaTestItem> list5 = qaTestItemService.lambdaQuery()
                    .eq(TQaTestItem::getStatus,3).eq(TQaTestItem::getCommitPersonId, sysUser.getUserId()).list();
            if (!list5.isEmpty()){
                tResultWorkEvaluateDetailEngineerVO9.setStartTime(list5.get(0).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO9.setEndTime(list5.get(list5.size() - 1).getCreateTime());
            }
            int tempDetail9 = 0;
            for (TQaTestItem tQaTestItem : list5) {
                if (StringUtils.hasLength(tQaTestItem.getEvaluateScore())){
                    for (String s : tQaTestItem.getEvaluateScore().split(",")){
                        tempDetail9 += Integer.parseInt(s);
                    }
                }
            }
            tResultWorkEvaluateDetailEngineerVO9.setCount(list5.size());
            tResultWorkEvaluateDetailEngineerVO9.setIntegral(tempDetail9);
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO9);
            // 中试、生产验证试验检验分析报告评定
            List<TQaProduceReport> list = qaProduceReportService.lambdaQuery()
                    .eq(TQaProduceReport::getStatus,3).eq(TQaProduceReport::getCommitPersonId, sysUser.getUserId()).list();
            TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO5 = new TResultWorkEvaluateDetailEngineerVO();
            List<TQaProduceReport> collect3 = list.stream().filter(e -> e.getReportType() == 1).collect(Collectors.toList());
            if (!collect3.isEmpty()) {
                tResultWorkEvaluateDetailEngineerVO5.setStartTime(collect3.get(0).getCreateTime());
                tResultWorkEvaluateDetailEngineerVO5.setEndTime(collect3.get(collect3.size() - 1).getCreateTime());
                tResultWorkEvaluateDetailEngineerVO5.setStartTime(collect3.get(0).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO5.setEndTime(collect3.get(collect3.size() - 1).getEvaluateTime());
            }
            int tempDetail5 = 0;
            for (TQaProduceReport tQaProduceReport : collect3) {
@@ -1045,8 +1148,8 @@
            TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO6 = new TResultWorkEvaluateDetailEngineerVO();
            List<TQaProduceReport> collect4 = list.stream().filter(e -> e.getReportType() == 2).collect(Collectors.toList());
            if (!collect4.isEmpty()) {
                tResultWorkEvaluateDetailEngineerVO6.setStartTime(collect4.get(0).getCreateTime());
                tResultWorkEvaluateDetailEngineerVO6.setEndTime(collect4.get(collect4.size() - 1).getCreateTime());
                tResultWorkEvaluateDetailEngineerVO6.setStartTime(collect4.get(0).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO6.setEndTime(collect4.get(collect4.size() - 1).getEvaluateTime());
            }
            int tempDetail6 = 0;
            for (TQaProduceReport tQaProduceReport : collect4) {
@@ -1063,8 +1166,8 @@
            TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO7 = new TResultWorkEvaluateDetailEngineerVO();
            List<TQaProduceReport> collect9 = list.stream().filter(e -> e.getReportType() == 1).collect(Collectors.toList());
            if (!collect9.isEmpty()) {
                tResultWorkEvaluateDetailEngineerVO7.setStartTime(collect9.get(0).getCreateTime());
                tResultWorkEvaluateDetailEngineerVO7.setEndTime(collect9.get(collect9.size() - 1).getCreateTime());
                tResultWorkEvaluateDetailEngineerVO7.setStartTime(collect9.get(0).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO7.setEndTime(collect9.get(collect9.size() - 1).getEvaluateTime());
            }
            int tempDetail7 = 0;
            for (TQaProduceReport tQaProduceReport : collect9) {
@@ -1406,6 +1509,7 @@
            tResultWorkEvaluateDetailUserVO.setList(tResultWorkEvaluateDetailEngineerVOS);
            tResultWorkEvaluateDetailUserVOS.add(tResultWorkEvaluateDetailUserVO);
        }
        tResultWorkEvaluateDetailVO.setTesterList(tResultWorkEvaluateDetailUserVOS);
        return R.ok(tResultWorkEvaluateDetailVO);
    }
}