From 6ea5493a8ca2b3231e482fda98b1388af1e7f9ff Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 16 五月 2025 11:03:40 +0800 Subject: [PATCH] 项目总积分 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TResultWorkEvaluateController.java | 620 ++++++++++++++++++++++++++++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/model/TResultWorkEvaluate.java | 4 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TResultWorkEvaluateMapper.java | 7 ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateVO.java | 36 ++ ruoyi-system/src/main/java/com/ruoyi/system/query/TResultWorkEvaluateQuery.java | 23 + ruoyi-system/src/main/java/com/ruoyi/system/service/TResultWorkEvaluateService.java | 5 ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailVO.java | 43 ++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java | 199 +++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailUserVO.java | 21 + ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailEngineerVO.java | 27 + ruoyi-system/src/main/resources/mapper/system/TResultWorkEvaluateMapper.xml | 23 + 11 files changed, 1,005 insertions(+), 3 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TResultWorkEvaluateController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TResultWorkEvaluateController.java index ee66470..8440e25 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TResultWorkEvaluateController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TResultWorkEvaluateController.java @@ -1,9 +1,32 @@ package com.ruoyi.web.controller.api; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +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.framework.web.service.TokenService; +import com.ruoyi.system.model.*; +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 org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * <p> @@ -17,6 +40,599 @@ @RestController @RequestMapping("/t-result-work-evaluate") public class TResultWorkEvaluateController { + @Resource + private TResultWorkEvaluateService tResultWorkEvaluateService; + @Resource + private TokenService tokenService; + @Resource + private TFeasibilityStudyReportService feasibilityStudyReportService; + @Resource + private TExperimentResultReportService experimentResultReportService; + @Resource + private TProjectApprovalReportService projectApprovalReportService; + @Resource + private TExperimentDispatchService experimentDispatchService; + @Resource + private TClinicalTrialPointsService clinicalTrialPointsService; + @Resource + private TProjectProposalService projectProposalService; + private final TProjectTeamService projectTeamService; + private final TProjectTeamStaffService projectTeamStaffService; + private final ISysUserService sysUserService; + + @Autowired + public TResultWorkEvaluateController(TProjectTeamService projectTeamService, TProjectTeamStaffService projectTeamStaffService, ISysUserService sysUserService) { + this.projectTeamService = projectTeamService; + this.projectTeamStaffService = projectTeamStaffService; + this.sysUserService = sysUserService; + } + @ApiOperation(value = "实验员工作评定管理分页列表", response = TQaTestItemReportQuery.class) + @PostMapping(value = "/api/t-result-work-evaluate/pageList") + public R<PageInfo<TResultWorkEvaluateVO>> pageList(@RequestBody String param) { + LoginUser loginUser = tokenService.getLoginUser(); + + TResultWorkEvaluateQuery query = JSON.parseObject(param, TResultWorkEvaluateQuery.class); + SysUser sysUser = sysUserService.selectUserById(loginUser.getUser().getUserId()); + if (sysUser.getRoleType()!=1){ + List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, loginUser.getUser().getUserId()).list() + .stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList()); + if (collect.isEmpty()){ + return R.ok(new PageInfo<>()); + } + } + return R.ok(tResultWorkEvaluateService.pageList(query)); + } + /** + * 查看取样记录详情 + */ + //@PreAuthorize("@ss.hasPermi('system:samplingRecord:detail')") + @ApiOperation(value = "查看详情") + @GetMapping(value = "/open/t-result-work-evaluate/getDetailById") + public R<TResultWorkEvaluateDetailVO> getDetailById(@RequestParam String id) { + TResultWorkEvaluateDetailVO tResultWorkEvaluateDetailVO = new TResultWorkEvaluateDetailVO(); + + TResultWorkEvaluate resultWorkEvaluate = tResultWorkEvaluateService.getById(id); + TProjectTeam projectTeam = projectTeamService.getById(resultWorkEvaluate.getTeamId()); + tResultWorkEvaluateDetailVO.setStartTime(projectTeam.getCreateTime()); + TProjectTeamStaff one = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getRoleType, 3).last("limit 1").one(); + Long userId = one.getUserId(); + List<TResultWorkEvaluate> list = tResultWorkEvaluateService.lambdaQuery().eq(TResultWorkEvaluate::getTeamId, resultWorkEvaluate.getTeamId()) + .eq(TResultWorkEvaluate::getStatus,1).orderByDesc(TResultWorkEvaluate::getEvaluateTime).list(); + int temp1=0; + int temp2=0; + int temp3=0; + int temp4=0; + int temp5=0; + for (TResultWorkEvaluate tResultWorkEvaluate : list) { + Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne(); + switch (evaluateOne){ + case 1: + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=2; + } + temp1+=2; + break; + case 2: + temp1+=1; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=1; + } + break; + + } + Integer evaluateTwo = tResultWorkEvaluate.getEvaluateTwo(); + switch (evaluateTwo){ + case 1: + temp1+=2; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=2; + } + break; + case 2: + temp1+=1; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=1; + } + break; + } + Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree(); + switch (evaluateThree){ + case 1: + temp1+=2; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=2; + } + break; + case 2: + temp1+=1; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=1; + } + break; + } + Integer evaluateFour = tResultWorkEvaluate.getEvaluateFour(); + switch (evaluateFour){ + case 1: + temp1+=2; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=2; + } + break; + case 2: + temp1+=1; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=1; + } + break; + } + Integer evaluateFive = tResultWorkEvaluate.getEvaluateFive(); + switch (evaluateFive){ + case 1: + temp1+=2; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=2; + } + break; + case 2: + temp1+=1; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=1; + } + break; + } + Integer evaluateSix = tResultWorkEvaluate.getEvaluateSix(); + switch (evaluateSix){ + case 1: + temp1-=3; + temp5++; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2-=3; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3-=3; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4-=3; + } + break; + } + } + tResultWorkEvaluateDetailVO.setTeamIntegral(temp1); + tResultWorkEvaluateDetailVO.setEngineerIntegral(temp2); + tResultWorkEvaluateDetailVO.setChemistIntegral(temp3); + tResultWorkEvaluateDetailVO.setTesterIntegral(temp4); + tResultWorkEvaluateDetailVO.setTermination(temp5); + if (!list.isEmpty()){ + tResultWorkEvaluateDetailVO.setEndTime(list.get(0).getEvaluateTime()); + } + List<TFeasibilityStudyReport> total = feasibilityStudyReportService.lambdaQuery() + .eq(TFeasibilityStudyReport::getStatus,3) + .eq(TFeasibilityStudyReport::getEvaluatePersonId, userId).list(); + List<TResultWorkEvaluateDetailEngineerVO> tResultWorkEvaluateDetailEngineerVOS = new ArrayList<>(); + // 工艺可研 + TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO = new TResultWorkEvaluateDetailEngineerVO(); + List<TFeasibilityStudyReport> collect = total.stream().filter(e -> e.getReportType().equals(1)).collect(Collectors.toList()); + int tempDetail= 0 ; + for (TFeasibilityStudyReport tFeasibilityStudyReport : collect) { + if (StringUtils.hasLength(tFeasibilityStudyReport.getEvaluateScore())){ + for (String s : tFeasibilityStudyReport.getEvaluateScore().split(",")) { + tempDetail+=Integer.parseInt(s); + } + } + } + tResultWorkEvaluateDetailEngineerVO.setCount(collect.size()); + tResultWorkEvaluateDetailEngineerVO.setIntegral(tempDetail); + if (!collect.isEmpty()){ + tResultWorkEvaluateDetailEngineerVO.setEndTime(collect.get(collect.size()-1).getEvaluateTime()); + } + tResultWorkEvaluateDetailEngineerVO.setStartTime(projectTeam.getCreateTime()); + + tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO); + // 工艺可行 + TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO1 = new TResultWorkEvaluateDetailEngineerVO(); + List<TFeasibilityStudyReport> collect1 = total.stream().filter(e -> e.getReportType().equals(2)).collect(Collectors.toList()); + int tempDetail1= 0 ; + for (TFeasibilityStudyReport tFeasibilityStudyReport : collect1) { + if (StringUtils.hasLength(tFeasibilityStudyReport.getEvaluateScore())){ + for (String s : tFeasibilityStudyReport.getEvaluateScore().split(",")) { + tempDetail1+=Integer.parseInt(s); + } + } + } + tResultWorkEvaluateDetailEngineerVO1.setCount(collect1.size()); + tResultWorkEvaluateDetailEngineerVO1.setIntegral(tempDetail1); + if (!collect1.isEmpty()){ + tResultWorkEvaluateDetailEngineerVO1.setEndTime(collect1.get(collect1.size()-1).getEvaluateTime()); + } + tResultWorkEvaluateDetailEngineerVO1.setStartTime(projectTeam.getCreateTime()); + + tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO1); + + // 开发阶段 + TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO2 = new TResultWorkEvaluateDetailEngineerVO(); + + + + List<Integer> status = new ArrayList<>(); + status.add(-1); + status.add(1); + status.add(3); + status.add(4); + status.add(5); + List<TProjectProposal> list2 = projectProposalService.lambdaQuery().eq(TProjectProposal::getCommitUserId, userId) + .notIn(TProjectProposal::getAuditStatus, status).list(); + List<String> collect5 = list2.stream().filter(e -> e.getProjectStage().equals(1)).map(TProjectProposal::getId).collect(Collectors.toList()); + if (collect5.isEmpty()){ + collect5.add("0"); + } + List<String> collect6 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect5) + .ne(TExperimentDispatch::getStatus, -1) + .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList()); + 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) { + Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne(); + switch (evaluateOne){ + case 1: + + tempDetail2+=2; + break; + case 2: + tempDetail2+=1; + + break; + + } + Integer evaluateTwo = tResultWorkEvaluate.getEvaluateTwo(); + switch (evaluateTwo){ + case 1: + tempDetail2+=2; + break; + case 2: + tempDetail2+=1; + + break; + } + Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree(); + switch (evaluateThree){ + case 1: + tempDetail2+=2; + + break; + case 2: + tempDetail2+=1; + break; + } + Integer evaluateFour = tResultWorkEvaluate.getEvaluateFour(); + switch (evaluateFour){ + case 1: + tempDetail2+=2; + + break; + case 2: + tempDetail2+=1; + break; + } + Integer evaluateFive = tResultWorkEvaluate.getEvaluateFive(); + switch (evaluateFive){ + case 1: + tempDetail2+=2; + + break; + case 2: + tempDetail2+=1; + break; + } + Integer evaluateSix = tResultWorkEvaluate.getEvaluateSix(); + switch (evaluateSix){ + case 1: + tempDetail2-=3; + break; + } + } + if (!list1.isEmpty()){ + tResultWorkEvaluateDetailEngineerVO2.setEndTime(list1.get(list1.size()-1).getEvaluateTime()); + } + tResultWorkEvaluateDetailEngineerVO2.setStartTime(projectTeam.getCreateTime()); + + tResultWorkEvaluateDetailEngineerVO2.setCount(list1.size()); + tResultWorkEvaluateDetailEngineerVO2.setIntegral(tempDetail2); + tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO2); + + // 中试试验阶段 + TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO3 = new TResultWorkEvaluateDetailEngineerVO(); + + List<String> collect7 = list2.stream().filter(e -> e.getProjectStage().equals(2)).map(TProjectProposal::getId).collect(Collectors.toList()); + if (collect7.isEmpty()){ + collect7.add("0"); + } + List<String> collect8 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect7) + .ne(TExperimentDispatch::getStatus, -1) + .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList()); + 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) { + Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne(); + switch (evaluateOne){ + case 1: + + tempDetail3+=2; + break; + case 2: + tempDetail3+=1; + + break; + + } + Integer evaluateTwo = tResultWorkEvaluate.getEvaluateTwo(); + switch (evaluateTwo){ + case 1: + tempDetail3+=2; + break; + case 2: + tempDetail3+=1; + + break; + } + Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree(); + switch (evaluateThree){ + case 1: + tempDetail3+=2; + + break; + case 2: + tempDetail3+=1; + break; + } + Integer evaluateFour = tResultWorkEvaluate.getEvaluateFour(); + switch (evaluateFour){ + case 1: + tempDetail3+=2; + + break; + case 2: + tempDetail3+=1; + break; + } + Integer evaluateFive = tResultWorkEvaluate.getEvaluateFive(); + switch (evaluateFive){ + case 1: + tempDetail3+=2; + + break; + case 2: + tempDetail3+=1; + break; + } + Integer evaluateSix = tResultWorkEvaluate.getEvaluateSix(); + switch (evaluateSix){ + case 1: + tempDetail3-=3; + break; + } + } + if (!list3.isEmpty()){ + tResultWorkEvaluateDetailEngineerVO3.setStartTime(list3.get(0).getEvaluateTime()); + tResultWorkEvaluateDetailEngineerVO3.setEndTime(list3.get(list3.size()-1).getEvaluateTime()); + } + tResultWorkEvaluateDetailEngineerVO3.setCount(list3.size()); + tResultWorkEvaluateDetailEngineerVO3.setIntegral(tempDetail3); + tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO3); + // 验证试验阶段 + TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO4 = new TResultWorkEvaluateDetailEngineerVO(); + + List<String> collect10 = list2.stream().filter(e -> e.getProjectStage().equals(2)).map(TProjectProposal::getId).collect(Collectors.toList()); + if (collect10.isEmpty()){ + collect10.add("0"); + } + List<String> collect11 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect10) + .ne(TExperimentDispatch::getStatus, -1) + .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList()); + if (collect11.isEmpty()){ + collect11.add("0"); + } + List<TResultWorkEvaluate> list4 = tResultWorkEvaluateService.lambdaQuery().in(TResultWorkEvaluate::getDispatchId, collect11).list(); + int tempDetail4 = 0; + for (TResultWorkEvaluate tResultWorkEvaluate : list4) { + Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne(); + switch (evaluateOne){ + case 1: + + tempDetail4+=2; + break; + case 2: + tempDetail4+=1; + + break; + + } + Integer evaluateTwo = tResultWorkEvaluate.getEvaluateTwo(); + switch (evaluateTwo){ + case 1: + tempDetail4+=2; + break; + case 2: + tempDetail4+=1; + + break; + } + Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree(); + switch (evaluateThree){ + case 1: + tempDetail4+=2; + + break; + case 2: + tempDetail4+=1; + break; + } + Integer evaluateFour = tResultWorkEvaluate.getEvaluateFour(); + switch (evaluateFour){ + case 1: + tempDetail4+=2; + + break; + case 2: + tempDetail4+=1; + break; + } + Integer evaluateFive = tResultWorkEvaluate.getEvaluateFive(); + switch (evaluateFive){ + case 1: + tempDetail4+=2; + + break; + case 2: + tempDetail4+=1; + break; + } + Integer evaluateSix = tResultWorkEvaluate.getEvaluateSix(); + switch (evaluateSix){ + case 1: + tempDetail4-=3; + break; + } + } + if (!list4.isEmpty()){ + tResultWorkEvaluateDetailEngineerVO4.setStartTime(list4.get(0).getEvaluateTime()); + tResultWorkEvaluateDetailEngineerVO4.setEndTime(list4.get(list4.size()-1).getEvaluateTime()); + } + tResultWorkEvaluateDetailEngineerVO4.setCount(list4.size()); + tResultWorkEvaluateDetailEngineerVO4.setIntegral(tempDetail4); + tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO4); + // 工艺开发工具 + TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO5 = new TResultWorkEvaluateDetailEngineerVO(); + List<TFeasibilityStudyReport> collect12 = total.stream().filter(e -> e.getReportType().equals(3)).collect(Collectors.toList()); + int tempDetail15= 0 ; + for (TFeasibilityStudyReport tFeasibilityStudyReport : collect12) { + if (StringUtils.hasLength(tFeasibilityStudyReport.getEvaluateScore())){ + for (String s : tFeasibilityStudyReport.getEvaluateScore().split(",")) { + tempDetail15+=Integer.parseInt(s); + } + } + } + tResultWorkEvaluateDetailEngineerVO5.setCount(collect12.size()); + tResultWorkEvaluateDetailEngineerVO5.setIntegral(tempDetail15); + if (!collect12.isEmpty()){ + tResultWorkEvaluateDetailEngineerVO5.setStartTime(collect12.get(0).getEvaluateTime()); + tResultWorkEvaluateDetailEngineerVO5.setEndTime(collect12.get(collect12.size()-1).getEvaluateTime()); + } + tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO5); + // 验证与发布 + TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO6 = new TResultWorkEvaluateDetailEngineerVO(); + List<TFeasibilityStudyReport> collect13 = total.stream().filter(e -> e.getReportType().equals(3)).collect(Collectors.toList()); + int tempDetail16= 0 ; + for (TFeasibilityStudyReport tFeasibilityStudyReport : collect13) { + if (StringUtils.hasLength(tFeasibilityStudyReport.getEvaluateScore())){ + for (String s : tFeasibilityStudyReport.getEvaluateScore().split(",")) { + tempDetail16+=Integer.parseInt(s); + } + } + } + tResultWorkEvaluateDetailEngineerVO6.setCount(collect13.size()); + tResultWorkEvaluateDetailEngineerVO6.setIntegral(tempDetail16); + if (!collect13.isEmpty()){ + tResultWorkEvaluateDetailEngineerVO6.setStartTime(collect13.get(0).getEvaluateTime()); + tResultWorkEvaluateDetailEngineerVO6.setEndTime(collect13.get(collect13.size()-1).getEvaluateTime()); + } + tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO6); + // 立项报告 + List<TProjectApprovalReport> list5 = projectApprovalReportService.lambdaQuery().orderByDesc(BaseModel::getCreateTime).eq(TProjectApprovalReport::getTeamId, projectTeam.getId()).eq(TProjectApprovalReport::getStatus, 2).list(); + TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO7 = new TResultWorkEvaluateDetailEngineerVO(); + tResultWorkEvaluateDetailEngineerVO7.setCount(list5.size()); + if (!list5.isEmpty()){ + 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(); + TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO8 = new TResultWorkEvaluateDetailEngineerVO(); + tResultWorkEvaluateDetailEngineerVO8.setCount(list6.size()); + if (!list6.isEmpty()){ + tResultWorkEvaluateDetailEngineerVO8.setEndTime(list6.get(list6.size()-1).getCreateTime()); + } + tResultWorkEvaluateDetailEngineerVO8.setStartTime(projectTeam.getCreateTime()); + tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO8); + tResultWorkEvaluateDetailVO.setEngineerList(tResultWorkEvaluateDetailEngineerVOS); + return R.ok(tResultWorkEvaluateDetailVO); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TResultWorkEvaluateMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TResultWorkEvaluateMapper.java index b345a64..1dbb3f7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TResultWorkEvaluateMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TResultWorkEvaluateMapper.java @@ -1,7 +1,13 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.TResultWorkEvaluate; +import com.ruoyi.system.query.TResultWorkEvaluateQuery; +import com.ruoyi.system.vo.TResultWorkEvaluateVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * <p> @@ -13,4 +19,5 @@ */ public interface TResultWorkEvaluateMapper extends BaseMapper<TResultWorkEvaluate> { + List<TResultWorkEvaluateVO> pageList(@Param("query")TResultWorkEvaluateQuery query,@Param("pageInfo") PageInfo<TResultWorkEvaluateVO> pageInfo); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TResultWorkEvaluate.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TResultWorkEvaluate.java index 5536c9b..00b6967 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TResultWorkEvaluate.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TResultWorkEvaluate.java @@ -29,7 +29,9 @@ @TableId(value = "id", type = IdType.ASSIGN_ID) private String id; - + @ApiModelProperty(value = "项目组id") + @TableField("team_id") + private String teamId; @ApiModelProperty(value = "调度id") @TableField("dispatch_id") private String dispatchId; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TResultWorkEvaluateQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TResultWorkEvaluateQuery.java new file mode 100644 index 0000000..40028e4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TResultWorkEvaluateQuery.java @@ -0,0 +1,23 @@ +package com.ruoyi.system.query; + +import com.ruoyi.common.core.domain.BasePage; +import com.ruoyi.common.core.domain.model.TimeRangeQueryBody; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "实验员工作评定管理分页query") +public class TResultWorkEvaluateQuery extends TimeRangeQueryBody { + + @ApiModelProperty(value = "项目组名称") + private String teamName; + + @ApiModelProperty(value = "状态 -1=草稿箱 1=已提交") + private Integer status; + @ApiModelProperty(value = "当前登陆人所属项目组List 前端忽略") + private List<String> teamIds; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TResultWorkEvaluateService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TResultWorkEvaluateService.java index 8b085d4..b484826 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TResultWorkEvaluateService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TResultWorkEvaluateService.java @@ -1,7 +1,10 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.TResultWorkEvaluate; +import com.ruoyi.system.query.TResultWorkEvaluateQuery; +import com.ruoyi.system.vo.TResultWorkEvaluateVO; /** * <p> @@ -13,4 +16,6 @@ */ public interface TResultWorkEvaluateService extends IService<TResultWorkEvaluate> { + PageInfo<TResultWorkEvaluateVO> pageList(TResultWorkEvaluateQuery query); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java index 599e83a..8c39ec8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java @@ -1,10 +1,24 @@ package com.ruoyi.system.service.impl; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.documents4j.api.IFileConsumer; +import com.ruoyi.common.basic.PageInfo; +import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.system.mapper.TResultWorkEvaluateMapper; +import com.ruoyi.system.model.TProjectTeamStaff; import com.ruoyi.system.model.TResultWorkEvaluate; +import com.ruoyi.system.query.TResultWorkEvaluateQuery; import com.ruoyi.system.service.TResultWorkEvaluateService; +import com.ruoyi.system.vo.TProjectTeamVO; +import com.ruoyi.system.vo.TResultWorkEvaluateVO; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -17,4 +31,189 @@ @Service public class TTesterWorkEvaluateServiceImpl extends ServiceImpl<TResultWorkEvaluateMapper, TResultWorkEvaluate> implements TResultWorkEvaluateService { + @Override + public PageInfo<TResultWorkEvaluateVO> pageList(TResultWorkEvaluateQuery query) { + PageInfo<TResultWorkEvaluateVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<TResultWorkEvaluateVO> list = this.baseMapper.pageList(query,pageInfo); + List<TResultWorkEvaluate> tResultWorkEvaluates = this.baseMapper.selectList(new LambdaQueryWrapper<TResultWorkEvaluate>() + .orderByDesc(TResultWorkEvaluate::getEvaluateTime)); + for (TResultWorkEvaluateVO tResultWorkEvaluateVO : list) { + List<TResultWorkEvaluate> collect = tResultWorkEvaluates.stream().filter(e -> +// e.getEvaluateOne()!=null&& +// e.getEvaluateTwo()!=null&& +// e.getEvaluateThree()!=null&& +// e.getEvaluateFour()!=null&& +// e.getEvaluateFive()!=null&& +// e.getEvaluateSix()!=null&& + e.getStatus()==1&& + e.getTeamId().equals(tResultWorkEvaluateVO.getTeamId())).collect(Collectors.toList()); + if (!collect.isEmpty()){ + tResultWorkEvaluateVO.setEndTime(collect.get(0).getEvaluateTime()); + } + int temp1=0; + int temp2=0; + int temp3=0; + int temp4=0; + + for (TResultWorkEvaluate tResultWorkEvaluate : collect) { + Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne(); + switch (evaluateOne){ + case 1: + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=2; + } + temp1+=2; + break; + case 2: + temp1+=1; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=1; + } + break; + + } + Integer evaluateTwo = tResultWorkEvaluate.getEvaluateTwo(); + switch (evaluateTwo){ + case 1: + temp1+=2; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=2; + } + break; + case 2: + temp1+=1; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=1; + } + break; + } + Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree(); + switch (evaluateThree){ + case 1: + temp1+=2; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=2; + } + break; + case 2: + temp1+=1; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=1; + } + break; + } + Integer evaluateFour = tResultWorkEvaluate.getEvaluateFour(); + switch (evaluateFour){ + case 1: + temp1+=2; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=2; + } + break; + case 2: + temp1+=1; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=1; + } + break; + } + Integer evaluateFive = tResultWorkEvaluate.getEvaluateFive(); + switch (evaluateFive){ + case 1: + temp1+=2; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=2; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=2; + } + break; + case 2: + temp1+=1; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3+=1; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4+=1; + } + break; + } + Integer evaluateSix = tResultWorkEvaluate.getEvaluateSix(); + switch (evaluateSix){ + case 1: + temp1+=2; + if (tResultWorkEvaluate.getEvaluateType()==1){ + temp2-=3; + } + if (tResultWorkEvaluate.getEvaluateType()==2){ + temp3-=3; + } + if (tResultWorkEvaluate.getEvaluateType()==3){ + temp4-=3; + } + break; + } + } + tResultWorkEvaluateVO.setTeamIntegral(temp1); + tResultWorkEvaluateVO.setEngineerIntegral(temp2); + tResultWorkEvaluateVO.setChemistIntegral(temp3); + tResultWorkEvaluateVO.setTesterIntegral(temp4); + } + pageInfo.setRecords(list); + return pageInfo; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailEngineerVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailEngineerVO.java new file mode 100644 index 0000000..f31d3ee --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailEngineerVO.java @@ -0,0 +1,27 @@ +package com.ruoyi.system.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.system.model.TResultWorkEvaluate; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@ApiModel(value = "实验员工作评定管理详情-左侧评定详情VO") +public class TResultWorkEvaluateDetailEngineerVO{ + + + @ApiModelProperty(value = "课题数/实验数") + private Integer count; + @ApiModelProperty(value = "积分数") + private Integer integral; + @ApiModelProperty(value = "评定开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime; + @ApiModelProperty(value = "评定结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailUserVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailUserVO.java new file mode 100644 index 0000000..547b4cf --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailUserVO.java @@ -0,0 +1,21 @@ +package com.ruoyi.system.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +@ApiModel(value = "实验员工作评定管理详情-化验师实验员使用VO") +public class TResultWorkEvaluateDetailUserVO { + + + @ApiModelProperty(value = "化验师/实验员名称") + private String userName; + @ApiModelProperty(value = "内容评定列表") + private List<TResultWorkEvaluateDetailEngineerVO> list; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailVO.java new file mode 100644 index 0000000..362caf4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailVO.java @@ -0,0 +1,43 @@ +package com.ruoyi.system.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.system.model.TResultWorkEvaluate; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +@ApiModel(value = "实验员工作评定管理详情VO") +public class TResultWorkEvaluateDetailVO extends TResultWorkEvaluate { + + @ApiModelProperty(value = "项目组名称") + private String teamName; + @ApiModelProperty(value = "项目组总积分") + private Integer teamIntegral; + @ApiModelProperty(value = "工艺工程师总积分") + private Integer engineerIntegral; + @ApiModelProperty(value = "化验师总积分") + private Integer chemistIntegral; + @ApiModelProperty(value = "实验员总积分") + private Integer testerIntegral; + @ApiModelProperty(value = "实验终止次数") + private Integer termination; + @ApiModelProperty(value = "评定开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime; + @ApiModelProperty(value = "评定结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime; + + @ApiModelProperty(value = "工艺工程师内容评定") + private List<TResultWorkEvaluateDetailEngineerVO> engineerList; + @ApiModelProperty(value = "化验室内容评定") + private List<TResultWorkEvaluateDetailUserVO> chemistList; + @ApiModelProperty(value = "实验员内容评定") + private List<TResultWorkEvaluateDetailUserVO> testerList; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateVO.java new file mode 100644 index 0000000..c378fef --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateVO.java @@ -0,0 +1,36 @@ +package com.ruoyi.system.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.system.model.TQaReportFile; +import com.ruoyi.system.model.TQaTestItemReport; +import com.ruoyi.system.model.TResultWorkEvaluate; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +@ApiModel(value = "实验员工作评定管理分页列表VO") +public class TResultWorkEvaluateVO extends TResultWorkEvaluate { + + @ApiModelProperty(value = "项目组名称") + private String teamName; + @ApiModelProperty(value = "项目组总积分") + private Integer teamIntegral; + @ApiModelProperty(value = "工艺工程师总积分") + private Integer engineerIntegral; + @ApiModelProperty(value = "化验师总积分") + private Integer chemistIntegral; + @ApiModelProperty(value = "实验员总积分") + private Integer testerIntegral; + @ApiModelProperty(value = "评定开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime; + @ApiModelProperty(value = "评定结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime; + +} diff --git a/ruoyi-system/src/main/resources/mapper/system/TResultWorkEvaluateMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TResultWorkEvaluateMapper.xml index ed5338c..394cf09 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TResultWorkEvaluateMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TResultWorkEvaluateMapper.xml @@ -30,5 +30,28 @@ <sql id="Base_Column_List"> id, dispatch_id, user_id, result_report_id,evaluate_type, evaluate_one, evaluate_two, evaluate_three, evaluate_four, evaluate_five, evaluate_six, status, evaluate_person_id, evaluate_time,result_evaluate_json, create_time, update_time, create_by, update_by, disabled </sql> + <select id="pageList" resultType="com.ruoyi.system.vo.TResultWorkEvaluateVO"> + select t1.*,t2.team_name as teamName,t2.create_time as startTime from t_result_work_evaluate t1 + left join t_project_team t2 on t1.team_id = t2.id + <where> + <if test="query.teamName != null and query.teamName != ''"> + and t2.team_name like concat('%',#{query.teamName},'%') + </if> + <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> + AND t1.create_time BETWEEN #{query.startTime} AND #{query.endTime} + </if> + <if test="query.status != null"> + AND t1.audit_status = #{query.auditStatus} + </if> + <if test="query.teamIds != null and query.teamIds > 0"> + AND t1.team_id in + <foreach collection="query.teamIds" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + </if> + AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} + </where> + group by t1.team_id + </select> </mapper> -- Gitblit v1.7.1