parent
4c461b5552
commit
1348c4d921
8 changed files with 438 additions and 7 deletions
@ -0,0 +1,47 @@ |
|||||||
|
package org.jeecg.modules.demo.bigScreen.controller; |
||||||
|
|
||||||
|
import io.swagger.annotations.Api; |
||||||
|
import io.swagger.annotations.ApiOperation; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.jeecg.common.api.vo.Result; |
||||||
|
import org.jeecg.modules.demo.abilityEvaluation.entity.PersonalAbilityEvaluation; |
||||||
|
import org.jeecg.modules.demo.bigScreen.service.CompSystemBigScreenService; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description: 比赛综合管理系统大屏 |
||||||
|
* @Author: Z.H.C |
||||||
|
* @CreateTime: 2023-11-28 16:45 |
||||||
|
* @Version: 1.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
@Api(tags = "比赛系统大屏") |
||||||
|
@RestController |
||||||
|
@RequestMapping("/comp/bigScreen") |
||||||
|
@Slf4j |
||||||
|
public class CompSystemBigScreenController /*extends JeecgController*/ { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private CompSystemBigScreenService compSystemBigScreenService; |
||||||
|
|
||||||
|
@ApiOperation(value = "院系综合大屏", notes = "院系综合大屏") |
||||||
|
@GetMapping(value = "/depart") |
||||||
|
public Result bigScreen4Depart(HttpServletRequest req) { |
||||||
|
Map<String, Object> result = compSystemBigScreenService.bigScreen4Depart(); |
||||||
|
return Result.ok(result); |
||||||
|
} |
||||||
|
|
||||||
|
@ApiOperation(value = "学生个人能力大屏", notes = "学生个人能力大屏") |
||||||
|
@GetMapping(value = "/student") |
||||||
|
public Result bigScreen4Student(PersonalAbilityEvaluation personalAbilityEvaluation) { |
||||||
|
Map<String, Object> result = compSystemBigScreenService.bigScreen4Student(personalAbilityEvaluation); |
||||||
|
return Result.ok(result); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package org.jeecg.modules.demo.bigScreen.service; |
||||||
|
|
||||||
|
import org.jeecg.modules.demo.abilityEvaluation.entity.PersonalAbilityEvaluation; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public interface CompSystemBigScreenService { |
||||||
|
Map<String, Object> bigScreen4Depart(); |
||||||
|
|
||||||
|
Map<String, Object> bigScreen4Student(PersonalAbilityEvaluation personalAbilityEvaluation); |
||||||
|
} |
@ -0,0 +1,253 @@ |
|||||||
|
package org.jeecg.modules.demo.bigScreen.service; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import org.jeecg.common.util.DateUtils; |
||||||
|
import org.jeecg.modules.demo.abilityEvaluation.entity.DepartAbilityEvaluation; |
||||||
|
import org.jeecg.modules.demo.abilityEvaluation.entity.PersonalAbilityEvaluation; |
||||||
|
import org.jeecg.modules.demo.abilityEvaluation.entity.PersonalAbilityEvaluationCollect; |
||||||
|
import org.jeecg.modules.demo.abilityEvaluation.service.IDepartAbilityEvaluationService; |
||||||
|
import org.jeecg.modules.demo.abilityEvaluation.service.IPersonalAbilityEvaluationCollectService; |
||||||
|
import org.jeecg.modules.demo.annual.entity.Annual; |
||||||
|
import org.jeecg.modules.demo.annual.service.IAnnualService; |
||||||
|
import org.jeecg.modules.demo.annualCompPoint.entity.AnnualCompPoint; |
||||||
|
import org.jeecg.modules.demo.annualCompPoint.service.IAnnualCompPointService; |
||||||
|
import org.jeecg.modules.demo.annualScore.entity.PersonalCompTotalScore; |
||||||
|
import org.jeecg.modules.demo.annualScore.service.IPersonalCompTotalScoreService; |
||||||
|
import org.jeecg.modules.demo.annualcomp.entity.AnnualComp; |
||||||
|
import org.jeecg.modules.demo.annualcomp.service.IAnnualCompService; |
||||||
|
import org.jeecg.modules.demo.annualcompetitionprojectregistration.entity.AnnualCompetitionProjectRegistration; |
||||||
|
import org.jeecg.modules.demo.annualcompetitionprojectregistration.entity.TeamManagement; |
||||||
|
import org.jeecg.modules.demo.annualcompetitionprojectregistration.service.IAnnualCompetitionProjectRegistrationService; |
||||||
|
import org.jeecg.modules.demo.annualcompetitionprojectregistration.service.ITeamManagementService; |
||||||
|
import org.jeecg.modules.demo.awardpersion.entity.AwardPersion; |
||||||
|
import org.jeecg.modules.demo.awardpersion.service.IAwardPersionService; |
||||||
|
import org.jeecg.modules.demo.bigScreen.vo.CompVo; |
||||||
|
import org.jeecg.modules.demo.bigScreen.vo.Last5YearDataVo; |
||||||
|
import org.jeecg.modules.demo.comp.entity.Comp; |
||||||
|
import org.jeecg.modules.demo.comp.service.ICompService; |
||||||
|
import org.jeecg.modules.system.entity.SysDepart; |
||||||
|
import org.jeecg.modules.system.entity.SysUser; |
||||||
|
import org.jeecg.modules.system.service.ISysDepartService; |
||||||
|
import org.jeecg.modules.system.service.ISysUserService; |
||||||
|
import org.springframework.beans.BeanUtils; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import org.springframework.util.Assert; |
||||||
|
import org.springframework.util.ObjectUtils; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.util.*; |
||||||
|
import java.util.concurrent.atomic.AtomicReference; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description: TODO |
||||||
|
* @Author: Z.H.C |
||||||
|
* @CreateTime: 2023-11-28 17:00 |
||||||
|
* @Version: 1.0 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class CompSystemBigScreenServiceImpl implements CompSystemBigScreenService { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IAnnualCompPointService iAnnualCompPointService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IAnnualCompService iAnnualCompService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private ICompService iCompService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private ISysDepartService iSysDepartService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IAnnualCompetitionProjectRegistrationService iAnnualCompetitionProjectRegistrationService; |
||||||
|
@Autowired |
||||||
|
private ITeamManagementService iTeamManagementService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IAwardPersionService iAwardPersionService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private ISysUserService iSysUserService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IPersonalCompTotalScoreService iPersonalCompTotalScoreService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IDepartAbilityEvaluationService iDepartAbilityEvaluationService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IPersonalAbilityEvaluationCollectService iPersonalAbilityEvaluationCollectService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IAnnualService iAnnualService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public Map<String, Object> bigScreen4Depart() { |
||||||
|
|
||||||
|
Map<String, Object> resultMap = new LinkedHashMap<>(); |
||||||
|
|
||||||
|
resultMap.put("compList", this.getCompList()); |
||||||
|
|
||||||
|
List<AwardPersion> awardPersionList = iAwardPersionService.list(new LambdaQueryWrapper<AwardPersion>().last("limit 30")); |
||||||
|
Optional.ofNullable(awardPersionList).orElse(new LinkedList<>()).forEach(award -> { |
||||||
|
// 根据报名编号查询参赛者信息,都是个人赛场景
|
||||||
|
TeamManagement management = iTeamManagementService.getOne(new LambdaQueryWrapper<TeamManagement>() |
||||||
|
.eq(TeamManagement::getEnrollCode, award.getEnrollCode()).last("limit 1")); |
||||||
|
if (ObjectUtils.isEmpty(management)) return; |
||||||
|
SysUser sysUser = iSysUserService.getById(management.getUserId()); |
||||||
|
award.setStudentname(sysUser.getRealname()); |
||||||
|
AnnualCompPoint annualCompPoint = iAnnualCompPointService.getById(award.getAnnualCompP()); |
||||||
|
award.setAnnualCompPname(annualCompPoint.getObjName()); |
||||||
|
}); |
||||||
|
resultMap.put("awardList", awardPersionList); |
||||||
|
|
||||||
|
List<PersonalCompTotalScore> personalCompScoreList = iPersonalCompTotalScoreService.list(new LambdaQueryWrapper<PersonalCompTotalScore>() |
||||||
|
.orderByDesc(PersonalCompTotalScore::getScore) |
||||||
|
.last("limit 50")); |
||||||
|
resultMap.put("studentScore", personalCompScoreList); |
||||||
|
|
||||||
|
Map<String, Object> compCounts = new LinkedHashMap<>(); |
||||||
|
Long compCount = iCompService.count(); |
||||||
|
Long pointCount = iAnnualCompPointService.count(); |
||||||
|
//比赛数
|
||||||
|
compCounts.put("compCount", compCount); |
||||||
|
//年度项目比赛数
|
||||||
|
compCounts.put("pointCount", pointCount); |
||||||
|
//总报名数数
|
||||||
|
Long count = iAnnualCompetitionProjectRegistrationService.count(); |
||||||
|
//学生人数
|
||||||
|
Long personCount = iAnnualCompetitionProjectRegistrationService.count(new LambdaQueryWrapper<AnnualCompetitionProjectRegistration>() |
||||||
|
.eq(AnnualCompetitionProjectRegistration::getEntryFormat, "0")); |
||||||
|
compCounts.put("personCompCount", personCount); |
||||||
|
//队伍数
|
||||||
|
Long teamCount = count - personCount; |
||||||
|
compCounts.put("teamCompCount", teamCount); |
||||||
|
resultMap.put("compCounts", compCounts); |
||||||
|
|
||||||
|
List<DepartAbilityEvaluation> departAbilityEvaluations = iDepartAbilityEvaluationService.list(); |
||||||
|
resultMap.put("departAbilityEvaluation", departAbilityEvaluations); |
||||||
|
|
||||||
|
List<Integer> years = DateUtils.getLast4Year(); |
||||||
|
List<Annual> annualList = iAnnualService.list(new LambdaQueryWrapper<Annual>().in(Annual::getAnnualName, years).orderByAsc(Annual::getAnnualName)); |
||||||
|
List<Last5YearDataVo> last5YearDataVos = new LinkedList<>(); |
||||||
|
Optional.ofNullable(annualList).orElse(new LinkedList<>()).stream().forEach(annual -> { |
||||||
|
Last5YearDataVo last5YearDataVo = new Last5YearDataVo(); |
||||||
|
last5YearDataVo.setYear(annual.getAnnualName()); |
||||||
|
AtomicReference<BigDecimal> personCount4Comp = new AtomicReference<>(BigDecimal.ZERO); |
||||||
|
|
||||||
|
List<AnnualComp> annualCompList = iAnnualCompService.list(new LambdaQueryWrapper<AnnualComp>().eq(AnnualComp::getAnnualid, annual.getId())); |
||||||
|
//比赛数
|
||||||
|
last5YearDataVo.setCompCount(annualCompList.size()); |
||||||
|
if (!ObjectUtils.isEmpty(annualCompList)) { |
||||||
|
annualCompList.stream().forEach(ac -> { |
||||||
|
AnnualCompPoint annualCompPoint = iAnnualCompPointService.getOne(new LambdaQueryWrapper<AnnualCompPoint>().eq(AnnualCompPoint::getAnnualCompId, ac.getId())); |
||||||
|
if (!ObjectUtils.isEmpty(annualCompPoint)) { |
||||||
|
long personCount4CompTemp = iAnnualCompetitionProjectRegistrationService.count(new LambdaQueryWrapper<AnnualCompetitionProjectRegistration>(). |
||||||
|
eq(AnnualCompetitionProjectRegistration::getAnnualCompid, annualCompPoint.getId())); |
||||||
|
personCount4Comp.getAndUpdate(val -> val.add(new BigDecimal(personCount4CompTemp))); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
last5YearDataVo.setPersonCount(personCount4Comp.get().intValue()); |
||||||
|
last5YearDataVos.add(last5YearDataVo); |
||||||
|
}); |
||||||
|
|
||||||
|
resultMap.put("last5YearData", last5YearDataVos); |
||||||
|
return resultMap; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Map<String, Object> bigScreen4Student(PersonalAbilityEvaluation person) { |
||||||
|
|
||||||
|
Assert.notNull(person.getWorkOn(), "学号不能为空"); |
||||||
|
|
||||||
|
Map<String, Object> resultMap = new LinkedHashMap<>(); |
||||||
|
List<PersonalAbilityEvaluationCollect> personalAbilityEvaluationList = iPersonalAbilityEvaluationCollectService.list(new LambdaQueryWrapper<PersonalAbilityEvaluationCollect>() |
||||||
|
.eq(PersonalAbilityEvaluationCollect::getWorkOn, person.getWorkOn())); |
||||||
|
resultMap.put("studentAbilityEvaluation", personalAbilityEvaluationList); |
||||||
|
|
||||||
|
Map<String, Object> studentInfoMap = new LinkedHashMap<>(); |
||||||
|
PersonalCompTotalScore compTotalScore = iPersonalCompTotalScoreService.getOne(new LambdaQueryWrapper<PersonalCompTotalScore>() |
||||||
|
.eq(PersonalCompTotalScore::getWorkOn, person.getWorkOn())); |
||||||
|
studentInfoMap.put("score", compTotalScore); |
||||||
|
|
||||||
|
|
||||||
|
SysUser sysUser = iSysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getWorkNo, person.getWorkOn())); |
||||||
|
List<AwardPersion> awardPersions = iAwardPersionService.list(new LambdaQueryWrapper<AwardPersion>() |
||||||
|
.eq(AwardPersion::getStudentcode, person.getWorkOn())); |
||||||
|
Optional.ofNullable(awardPersions).orElse(new LinkedList<>()).forEach(award -> { |
||||||
|
AnnualCompPoint annualCompPoint = iAnnualCompPointService.getById(award.getAnnualCompP()); |
||||||
|
award.setAnnualCompPname(annualCompPoint.getObjName()); |
||||||
|
}); |
||||||
|
|
||||||
|
studentInfoMap.put("studentAwardList", awardPersions); |
||||||
|
studentInfoMap.put("workNo", person.getWorkOn()); |
||||||
|
studentInfoMap.put("name", sysUser.getRealname()); |
||||||
|
studentInfoMap.put("major", "软件工程"); |
||||||
|
studentInfoMap.put("grade", "202*级"); |
||||||
|
studentInfoMap.put("class", "软工*班"); |
||||||
|
resultMap.put("studentInfo", studentInfoMap); |
||||||
|
|
||||||
|
List<TeamManagement> studentEnrollCodeList = iTeamManagementService.list(new LambdaQueryWrapper<TeamManagement>() |
||||||
|
.eq(TeamManagement::getUserId, sysUser.getId())); |
||||||
|
List<String> enrollCodeList = studentEnrollCodeList.stream().map(en -> en.getEnrollCode()).collect(Collectors.toList()); |
||||||
|
List<AnnualCompetitionProjectRegistration> registrationList = iAnnualCompetitionProjectRegistrationService.list(new LambdaQueryWrapper<AnnualCompetitionProjectRegistration>() |
||||||
|
.in(AnnualCompetitionProjectRegistration::getEnrollCode, enrollCodeList)); |
||||||
|
|
||||||
|
List<CompVo> compVoList = new LinkedList<>(); |
||||||
|
Optional.ofNullable(registrationList).orElse(new LinkedList<>()).forEach(r -> { |
||||||
|
AnnualCompPoint p = iAnnualCompPointService.getById(r.getAnnualCompid()); |
||||||
|
CompVo compVo = new CompVo(); |
||||||
|
BeanUtils.copyProperties(p, compVo); |
||||||
|
AwardPersion awardPersion = iAwardPersionService.getOne(new LambdaQueryWrapper<AwardPersion>() |
||||||
|
.eq(AwardPersion::getEnrollCode, r.getEnrollCode()) |
||||||
|
.eq(AwardPersion::getAnnualCompP, r.getAnnualCompid()) |
||||||
|
); |
||||||
|
if (ObjectUtils.isEmpty(awardPersion)) { |
||||||
|
compVo.setAwardName("--"); |
||||||
|
} else { |
||||||
|
compVo.setAwardName(awardPersion.getAwardname()); |
||||||
|
} |
||||||
|
compVo.setCompName(p.getObjName()); |
||||||
|
AnnualComp annualComp = iAnnualCompService.getById(p.getAnnualCompId()); |
||||||
|
if (!ObjectUtils.isEmpty(annualComp)) { |
||||||
|
Comp comp = iCompService.getById(annualComp.getCompid()); |
||||||
|
if (!ObjectUtils.isEmpty(comp)) { |
||||||
|
SysDepart sysDepart = iSysDepartService.getById(comp.getCompOrgan()); |
||||||
|
compVo.setCompOrganName(sysDepart.getDepartName()); |
||||||
|
} |
||||||
|
} |
||||||
|
compVoList.add(compVo); |
||||||
|
}); |
||||||
|
resultMap.put("compList", compVoList); |
||||||
|
|
||||||
|
return resultMap; |
||||||
|
} |
||||||
|
|
||||||
|
List<CompVo> getCompList() { |
||||||
|
List<AnnualCompPoint> annualCompPointList = iAnnualCompPointService.list(new LambdaQueryWrapper<AnnualCompPoint>() |
||||||
|
.eq(AnnualCompPoint::getRequireApply, "Y")); |
||||||
|
List<CompVo> compVoList = new LinkedList<>(); |
||||||
|
Optional.ofNullable(annualCompPointList).orElse(new LinkedList<>()).stream().forEach(p -> { |
||||||
|
CompVo compVo = new CompVo(); |
||||||
|
BeanUtils.copyProperties(p, compVo); |
||||||
|
Long numberCount = iAnnualCompetitionProjectRegistrationService.count(new LambdaQueryWrapper<AnnualCompetitionProjectRegistration>() |
||||||
|
.eq(AnnualCompetitionProjectRegistration::getAnnualCompid, p.getId())); |
||||||
|
compVo.setNumber(numberCount.intValue()); |
||||||
|
AnnualComp annualComp = iAnnualCompService.getById(p.getAnnualCompId()); |
||||||
|
if (!ObjectUtils.isEmpty(annualComp)) { |
||||||
|
Comp comp = iCompService.getById(annualComp.getCompid()); |
||||||
|
if (!ObjectUtils.isEmpty(comp)) { |
||||||
|
compVo.setCompName(comp.getCompName()); |
||||||
|
SysDepart sysDepart = iSysDepartService.getById(comp.getCompOrgan()); |
||||||
|
compVo.setCompOrganName(sysDepart.getDepartName()); |
||||||
|
} |
||||||
|
} |
||||||
|
compVoList.add(compVo); |
||||||
|
}); |
||||||
|
return compVoList; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
package org.jeecg.modules.demo.bigScreen.vo; |
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description: TODO |
||||||
|
* @Author: Z.H.C |
||||||
|
* @CreateTime: 2023-11-29 15:52 |
||||||
|
* @Version: 1.0 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class CompVo implements Serializable { |
||||||
|
|
||||||
|
@ApiModelProperty(value = "主键") |
||||||
|
private String id; |
||||||
|
|
||||||
|
/** |
||||||
|
* 比赛名称 |
||||||
|
*/ |
||||||
|
@ApiModelProperty(value = "比赛名称") |
||||||
|
private String compName; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "负责部门") |
||||||
|
private String compOrganName; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "奖项名称") |
||||||
|
private java.lang.String awardName; |
||||||
|
|
||||||
|
private Integer number; |
||||||
|
} |
@ -0,0 +1,36 @@ |
|||||||
|
package org.jeecg.modules.demo.bigScreen.vo; |
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import io.swagger.models.auth.In; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description: TODO |
||||||
|
* @Author: Z.H.C |
||||||
|
* @CreateTime: 2023-11-30 16:08 |
||||||
|
* @Version: 1.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
@Data |
||||||
|
public class Last5YearDataVo implements Serializable { |
||||||
|
|
||||||
|
// @ApiModelProperty(value = "主键")
|
||||||
|
// private String id;
|
||||||
|
|
||||||
|
/** |
||||||
|
* 比赛名称 |
||||||
|
*/ |
||||||
|
// @ApiModelProperty(value = "比赛名称")
|
||||||
|
// private String compName;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "年度") |
||||||
|
private String year; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "比赛数量") |
||||||
|
private Integer compCount; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "参赛人数量") |
||||||
|
private Integer personCount; |
||||||
|
} |
Loading…
Reference in new issue