/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.evaluate.wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springblade.core.mp.support.BaseEntityWrapper; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.SpringUtil; import org.springblade.modules.evaluate.dto.EvaluateTaskDTO; import org.springblade.modules.evaluate.entity.EvaluateCandidateResultEntity; import org.springblade.modules.evaluate.entity.EvaluateTaskCategoryEntity; import org.springblade.modules.evaluate.entity.EvaluateTaskEntity; import org.springblade.modules.evaluate.entity.EvaluateTaskReferrerEntity; import org.springblade.modules.evaluate.service.IEvaluateCandidateResultService; import org.springblade.modules.evaluate.service.IEvaluateTaskCategoryService; import org.springblade.modules.evaluate.service.IEvaluateTaskReferrerService; import org.springblade.modules.evaluate.vo.EvaluateTaskVO; import java.util.List; import java.util.Objects; /** * 评优任务表 包装类,返回视图层所需的字段 * * @author aix * @since 2024-01-05 */ public class EvaluateTaskWrapper extends BaseEntityWrapper { private static final IEvaluateTaskReferrerService evaluateTaskReferrerService; private static final IEvaluateTaskCategoryService evaluateTaskCategoryService; private static final IEvaluateCandidateResultService evaluateCandidateResultService; static { evaluateTaskReferrerService = SpringUtil.getBean(IEvaluateTaskReferrerService.class); evaluateTaskCategoryService = SpringUtil.getBean(IEvaluateTaskCategoryService.class); evaluateCandidateResultService = SpringUtil.getBean(IEvaluateCandidateResultService.class); } public static EvaluateTaskWrapper build() { return new EvaluateTaskWrapper(); } @Override public EvaluateTaskVO entityVO(EvaluateTaskEntity evaluateTask) { EvaluateTaskVO evaluateTaskVO = Objects.requireNonNull(BeanUtil.copy(evaluateTask, EvaluateTaskVO.class)); //User createUser = UserCache.getUser(evaluateTask.getCreateUser()); //User updateUser = UserCache.getUser(evaluateTask.getUpdateUser()); //evaluateTaskVO.setCreateUserName(createUser.getName()); //evaluateTaskVO.setUpdateUserName(updateUser.getName()); return evaluateTaskVO; } public EvaluateTaskDTO entityDTO(EvaluateTaskEntity evaluateTask) { EvaluateTaskDTO dto = Objects.requireNonNull(BeanUtil.copy(evaluateTask, EvaluateTaskDTO.class)); return dto; } /** * h5返回自己第一轮投票的人 * @param pages * @return */ public IPage h5ReferremPageVO(IPage pages) { List records = listVO(pages.getRecords()); for (EvaluateTaskVO vo: records) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("create_user", AuthUtil.getUserId()); queryWrapper.eq("evaluate_task_id", vo.getId()); List evaluateTaskReferrerEntities = evaluateTaskReferrerService.list(queryWrapper); vo.setIsVote(evaluateTaskReferrerEntities.size() > 0); if (vo.getIsVote()) vo.setEvaluateTaskReferrerVOS(EvaluateTaskReferrerWrapper.build().listVO(evaluateTaskReferrerEntities)); } IPage pageVo = new Page<>(pages.getCurrent(), pages.getSize(), pages.getTotal()); pageVo.setRecords(records); return pageVo; } /** * 第二轮候选人投票 * @return */ public IPage h5CandidatePageVO(IPage pages) { List records = listVO(pages.getRecords()); for (EvaluateTaskVO vo: records) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("create_user", AuthUtil.getUserId()); queryWrapper.eq("evaluate_task_id", vo.getId()); List entities = evaluateCandidateResultService.list(queryWrapper); QueryWrapper qw = new QueryWrapper(); qw.eq("evaluate_task_id", vo.getId()); List evaluateTaskCategoryEntities = evaluateTaskCategoryService.list(qw); int evaluateCount = evaluateTaskCategoryEntities.stream().mapToInt(EvaluateTaskCategoryEntity::getPeopleNum).sum(); // 计算总数 if (vo.getType() == 0) { vo.setIsVote(entities.size() == evaluateCount); if (entities.size() > 0) vo.setEvaluateCandidateResultVOS(EvaluateCandidateResultWrapper.build().listVO(entities)); } else { vo.setIsVote(entities.size() > 0); if (entities.size() > 0) vo.setEvaluateCandidateResultVOS(EvaluateCandidateResultWrapper.build().listVO(entities)); } } IPage pageVo = new Page<>(pages.getCurrent(), pages.getSize(), pages.getTotal()); pageVo.setRecords(records); return pageVo; } }