团队模板80%;新增发布没有填入names的bug修复;web获取发布没有recordId的bug修复
This commit is contained in:
parent
d3b8086723
commit
81cb29e4ba
|
@ -51,7 +51,7 @@ public class EvaluationRecordController extends BaseController {
|
||||||
* 导出量测记录列表
|
* 导出量测记录列表
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("evaluation:record:export")
|
@SaCheckPermission("evaluation:record:export")
|
||||||
@Log(title = "量测记录", businessType = BusinessType.EXPORT)
|
@Log(title = "个人量测记录", businessType = BusinessType.EXPORT)
|
||||||
@PostMapping("/export")
|
@PostMapping("/export")
|
||||||
public void export(BaseQueryBo bo, HttpServletResponse response) throws IOException {
|
public void export(BaseQueryBo bo, HttpServletResponse response) throws IOException {
|
||||||
XWPFTemplate template = sysEvaluationRecordService.getWordTemplate(bo);
|
XWPFTemplate template = sysEvaluationRecordService.getWordTemplate(bo);
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
package org.dromara.scale.controller;
|
package org.dromara.scale.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import com.deepoove.poi.XWPFTemplate;
|
||||||
|
import com.deepoove.poi.util.PoitlIOUtils;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.core.utils.file.FileUtils;
|
||||||
import org.dromara.common.core.validate.AddGroup;
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
import org.dromara.common.core.validate.EditGroup;
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
import org.dromara.common.excel.utils.ExcelUtil;
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
|
@ -22,6 +25,9 @@ import org.dromara.scale.service.ISysScalePublishService;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.io.BufferedOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,7 +68,7 @@ public class ScalePublishController extends BaseController {
|
||||||
@SaCheckPermission("publish:evaluation:export")
|
@SaCheckPermission("publish:evaluation:export")
|
||||||
@Log(title = "未测名单", businessType = BusinessType.EXPORT)
|
@Log(title = "未测名单", businessType = BusinessType.EXPORT)
|
||||||
@PostMapping("/evaluation/undone/export")
|
@PostMapping("/evaluation/undone/export")
|
||||||
public void export(BaseQueryBo query, HttpServletResponse response) {
|
public void undoneExport(BaseQueryBo query, HttpServletResponse response) {
|
||||||
List<EvaluationVo> list = sysScalePublishService.queryUndoneExportList(query);
|
List<EvaluationVo> list = sysScalePublishService.queryUndoneExportList(query);
|
||||||
ExcelUtil.exportExcel(list, query.getSessionName() + "的未测名单", EvaluationVo.class, response);
|
ExcelUtil.exportExcel(list, query.getSessionName() + "的未测名单", EvaluationVo.class, response);
|
||||||
}
|
}
|
||||||
|
@ -124,4 +130,22 @@ public class ScalePublishController extends BaseController {
|
||||||
return toAjax(sysScalePublishService.deleteById(batchNo));
|
return toAjax(sysScalePublishService.deleteById(batchNo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出量测记录列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("scale:publish:export")
|
||||||
|
@Log(title = "场次量测记录", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(BaseQueryBo bo, HttpServletResponse response) throws IOException {
|
||||||
|
XWPFTemplate template = sysScalePublishService.getWordTemplate(bo);
|
||||||
|
//ExcelUtil.exportExcel(list, "量测记录", SysEvaluationRecordVo.class, response);
|
||||||
|
FileUtils.setAttachmentResponseHeader(response, bo.getSessionName() + "的报告");
|
||||||
|
response.setContentType("application/octet-stream");
|
||||||
|
OutputStream out = response.getOutputStream();
|
||||||
|
BufferedOutputStream bos = new BufferedOutputStream(out);
|
||||||
|
template.write(bos);
|
||||||
|
bos.flush();
|
||||||
|
out.flush();
|
||||||
|
PoitlIOUtils.closeQuietlyMulti(template, bos, out);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@ public class SysWarnRecord {
|
||||||
* 测评人id
|
* 测评人id
|
||||||
*/
|
*/
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 补充说明
|
* 补充说明
|
||||||
|
|
|
@ -70,6 +70,8 @@ public class SysScalePublishVo implements Serializable {
|
||||||
|
|
||||||
private String createName;
|
private String createName;
|
||||||
|
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
private List<SysScaleVo> scaleList;
|
private List<SysScaleVo> scaleList;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,14 +7,14 @@ import lombok.Data;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>TODO<p>
|
* <p>个人测试报告<p>
|
||||||
*
|
*
|
||||||
* @author cjw
|
* @author cjw
|
||||||
* @version V1.0.0
|
* @version V1.0.0
|
||||||
* @date 2024/4/29 11:09
|
* @date 2024/4/29 11:09
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class EvaluationEecordWordData {
|
public class EvaluationRecordWordData {
|
||||||
|
|
||||||
private String createTime;
|
private String createTime;
|
||||||
private String useTime;
|
private String useTime;
|
|
@ -0,0 +1,53 @@
|
||||||
|
package org.dromara.scale.domain.word;
|
||||||
|
|
||||||
|
import com.deepoove.poi.data.ChartSingleSeriesRenderData;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>团体测试报告<p>
|
||||||
|
*
|
||||||
|
* @author cjw
|
||||||
|
* @version V1.0.0
|
||||||
|
* @date 2024/4/29 11:09
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PublishRecordWordData {
|
||||||
|
|
||||||
|
private String sessionName;
|
||||||
|
|
||||||
|
private String publishTime;
|
||||||
|
private String dataTime;
|
||||||
|
|
||||||
|
private String classNum;
|
||||||
|
|
||||||
|
private String personNum;
|
||||||
|
|
||||||
|
private String maleNum;
|
||||||
|
private String malePercent;
|
||||||
|
private String femaleNum;
|
||||||
|
private String femalePercent;
|
||||||
|
private ChartSingleSeriesRenderData sexChart;
|
||||||
|
|
||||||
|
private String completeNum;
|
||||||
|
private String completePercent;
|
||||||
|
private String undoneNum;
|
||||||
|
private String undonePercent;
|
||||||
|
private ChartSingleSeriesRenderData completeChart;
|
||||||
|
|
||||||
|
private String warnNum;
|
||||||
|
private String warnPercent;
|
||||||
|
private String normalNum;
|
||||||
|
private String normalPercent;
|
||||||
|
private ChartSingleSeriesRenderData warnChart;
|
||||||
|
|
||||||
|
private String classWarnName;
|
||||||
|
private String classWarnNum;
|
||||||
|
private String classWarnPercent;
|
||||||
|
private ChartSingleSeriesRenderData classChart;
|
||||||
|
|
||||||
|
private List<WordWarn> warnCharts;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package org.dromara.scale.domain.word;
|
||||||
|
|
||||||
|
import com.deepoove.poi.data.ChartSingleSeriesRenderData;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>TODO<p>
|
||||||
|
*
|
||||||
|
* @author cjw
|
||||||
|
* @version V1.0.0
|
||||||
|
* @date 2024/5/11 16:20
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class WordWarn {
|
||||||
|
|
||||||
|
|
||||||
|
private String scaleName;
|
||||||
|
private ChartSingleSeriesRenderData warnChart;
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
import org.dromara.scale.domain.SysEvaluationRecord;
|
import org.dromara.scale.domain.SysEvaluationRecord;
|
||||||
|
import org.dromara.scale.domain.vo.StatisticNumVo;
|
||||||
import org.dromara.scale.domain.vo.SysScaleVo;
|
import org.dromara.scale.domain.vo.SysScaleVo;
|
||||||
import org.dromara.scale.domain.word.WordEvaluationFactor;
|
import org.dromara.scale.domain.word.WordEvaluationFactor;
|
||||||
import org.dromara.scale.domain.vo.SysEvaluationRecordVo;
|
import org.dromara.scale.domain.vo.SysEvaluationRecordVo;
|
||||||
|
@ -35,4 +36,10 @@ public interface SysEvaluationRecordMapper extends BaseMapperPlus<SysEvaluationR
|
||||||
|
|
||||||
int deleteByBatchNo(Long batchNo);
|
int deleteByBatchNo(Long batchNo);
|
||||||
|
|
||||||
|
int selectCompleteNumByBatchNo(Long batchNo);
|
||||||
|
|
||||||
|
int selectWarnNumByBatchNo(Long batchNo);
|
||||||
|
|
||||||
|
List<StatisticNumVo> selectMaxWarnNumByBatchNo(Long batchNo);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Param;
|
||||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
import org.dromara.scale.domain.SysScalePublish;
|
import org.dromara.scale.domain.SysScalePublish;
|
||||||
import org.dromara.scale.domain.vo.EvaluationVo;
|
import org.dromara.scale.domain.vo.EvaluationVo;
|
||||||
|
import org.dromara.scale.domain.vo.StatisticNumVo;
|
||||||
import org.dromara.scale.domain.vo.SysScalePublishVo;
|
import org.dromara.scale.domain.vo.SysScalePublishVo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -32,4 +33,6 @@ public interface SysScalePublishMapper extends BaseMapperPlus<SysScalePublish, S
|
||||||
|
|
||||||
String selectUseBatchNoByUserId(Long userId);
|
String selectUseBatchNoByUserId(Long userId);
|
||||||
|
|
||||||
|
StatisticNumVo selectSexNumByBatchNo(Long batchNo);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.dromara.scale.service;
|
package org.dromara.scale.service;
|
||||||
|
|
||||||
|
import com.deepoove.poi.XWPFTemplate;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.scale.domain.bo.BaseQueryBo;
|
import org.dromara.scale.domain.bo.BaseQueryBo;
|
||||||
|
@ -7,6 +8,7 @@ import org.dromara.scale.domain.bo.SysScalePublishBo;
|
||||||
import org.dromara.scale.domain.vo.EvaluationVo;
|
import org.dromara.scale.domain.vo.EvaluationVo;
|
||||||
import org.dromara.scale.domain.vo.SysScalePublishVo;
|
import org.dromara.scale.domain.vo.SysScalePublishVo;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -54,5 +56,7 @@ public interface ISysScalePublishService {
|
||||||
|
|
||||||
List<EvaluationVo> queryUndoneExportList(BaseQueryBo query);
|
List<EvaluationVo> queryUndoneExportList(BaseQueryBo query);
|
||||||
|
|
||||||
|
XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ import org.dromara.scale.domain.bo.BaseQueryBo;
|
||||||
import org.dromara.scale.domain.bo.SysEvaluationRecordBo;
|
import org.dromara.scale.domain.bo.SysEvaluationRecordBo;
|
||||||
import org.dromara.scale.domain.vo.SysEvaluationRecordVo;
|
import org.dromara.scale.domain.vo.SysEvaluationRecordVo;
|
||||||
import org.dromara.scale.domain.vo.SysScaleVo;
|
import org.dromara.scale.domain.vo.SysScaleVo;
|
||||||
import org.dromara.scale.domain.word.EvaluationEecordWordData;
|
import org.dromara.scale.domain.word.EvaluationRecordWordData;
|
||||||
import org.dromara.scale.domain.word.WordEvaluationFactor;
|
import org.dromara.scale.domain.word.WordEvaluationFactor;
|
||||||
import org.dromara.scale.domain.word.WordFactor;
|
import org.dromara.scale.domain.word.WordFactor;
|
||||||
import org.dromara.scale.mapper.SysEvaluationRecordMapper;
|
import org.dromara.scale.mapper.SysEvaluationRecordMapper;
|
||||||
|
@ -103,7 +103,7 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi
|
||||||
if (scaleId == null) {
|
if (scaleId == null) {
|
||||||
throw new ServerException("量表ID不能为空");
|
throw new ServerException("量表ID不能为空");
|
||||||
}
|
}
|
||||||
EvaluationEecordWordData wordData = new EvaluationEecordWordData();
|
EvaluationRecordWordData wordData = new EvaluationRecordWordData();
|
||||||
|
|
||||||
SysEvaluationRecord sysEvaluationRecord = baseMapper.selectById(recordId);
|
SysEvaluationRecord sysEvaluationRecord = baseMapper.selectById(recordId);
|
||||||
Date createTime = sysEvaluationRecord.getCreateTime();
|
Date createTime = sysEvaluationRecord.getCreateTime();
|
||||||
|
|
|
@ -5,6 +5,9 @@ import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.deepoove.poi.XWPFTemplate;
|
||||||
|
import com.deepoove.poi.data.ChartSingleSeriesRenderData;
|
||||||
|
import com.deepoove.poi.data.Charts;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.domain.model.LoginUser;
|
import org.dromara.common.core.domain.model.LoginUser;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
|
@ -19,10 +22,8 @@ import org.dromara.scale.domain.SysEvaluationRecord;
|
||||||
import org.dromara.scale.domain.SysScalePublish;
|
import org.dromara.scale.domain.SysScalePublish;
|
||||||
import org.dromara.scale.domain.bo.BaseQueryBo;
|
import org.dromara.scale.domain.bo.BaseQueryBo;
|
||||||
import org.dromara.scale.domain.bo.SysScalePublishBo;
|
import org.dromara.scale.domain.bo.SysScalePublishBo;
|
||||||
import org.dromara.scale.domain.vo.EvaluationVo;
|
import org.dromara.scale.domain.vo.*;
|
||||||
import org.dromara.scale.domain.vo.SysEvaluationRecordVo;
|
import org.dromara.scale.domain.word.PublishRecordWordData;
|
||||||
import org.dromara.scale.domain.vo.SysScalePublishVo;
|
|
||||||
import org.dromara.scale.domain.vo.SysScaleVo;
|
|
||||||
import org.dromara.scale.mapper.SysEvaluationRecordMapper;
|
import org.dromara.scale.mapper.SysEvaluationRecordMapper;
|
||||||
import org.dromara.scale.mapper.SysScaleMapper;
|
import org.dromara.scale.mapper.SysScaleMapper;
|
||||||
import org.dromara.scale.mapper.SysScalePublishMapper;
|
import org.dromara.scale.mapper.SysScalePublishMapper;
|
||||||
|
@ -33,9 +34,11 @@ import org.dromara.system.mapper.SysDeptMapper;
|
||||||
import org.dromara.system.mapper.SysUserMapper;
|
import org.dromara.system.mapper.SysUserMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.io.IOException;
|
||||||
import java.util.Date;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.math.RoundingMode;
|
||||||
|
import java.rmi.ServerException;
|
||||||
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@ -110,9 +113,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
||||||
add.setCreateBy(loginUser.getUserId());
|
add.setCreateBy(loginUser.getUserId());
|
||||||
add.setCreateTime(new Date());
|
add.setCreateTime(new Date());
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
|
||||||
Integer publishType = add.getPublishType();
|
Integer publishType = add.getPublishType();
|
||||||
Long batchNo = add.getBatchNo();
|
|
||||||
String scaleIds = add.getScaleIds();
|
String scaleIds = add.getScaleIds();
|
||||||
String deptIds = add.getDeptIds();
|
String deptIds = add.getDeptIds();
|
||||||
String userIds = add.getUserIds();
|
String userIds = add.getUserIds();
|
||||||
|
@ -149,12 +150,13 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
||||||
add.setUserNames(userList.stream().map(SysUser::getNickName).collect(Collectors.joining(StrUtil.COMMA)));
|
add.setUserNames(userList.stream().map(SysUser::getNickName).collect(Collectors.joining(StrUtil.COMMA)));
|
||||||
}
|
}
|
||||||
add.setTotalNum(userList.size());
|
add.setTotalNum(userList.size());
|
||||||
//预处理量测记录,方便后续统计与查询
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
List<String> scaleList = bo.getScaleIds();
|
|
||||||
insertRecordBatch(batchNo, scaleList, userList);
|
|
||||||
if (flag) {
|
if (flag) {
|
||||||
bo.setBatchNo(add.getBatchNo());
|
bo.setBatchNo(add.getBatchNo());
|
||||||
}
|
}
|
||||||
|
//预处理量测记录,方便后续统计与查询
|
||||||
|
List<String> scaleList = bo.getScaleIds();
|
||||||
|
insertRecordBatch(add.getBatchNo(), scaleList, userList);
|
||||||
//加入延迟队列
|
//加入延迟队列
|
||||||
QueueUtils.addDelayedQueueObject("scalePublish-delay-queue", add.getBatchNo(), l, TimeUnit.MILLISECONDS);
|
QueueUtils.addDelayedQueueObject("scalePublish-delay-queue", add.getBatchNo(), l, TimeUnit.MILLISECONDS);
|
||||||
return flag;
|
return flag;
|
||||||
|
@ -261,4 +263,94 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
||||||
public List<EvaluationVo> queryUndoneExportList(BaseQueryBo query) {
|
public List<EvaluationVo> queryUndoneExportList(BaseQueryBo query) {
|
||||||
return baseMapper.selectUndoneEvaluationVoList(query.getBatchNo());
|
return baseMapper.selectUndoneEvaluationVoList(query.getBatchNo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException {
|
||||||
|
Long batchNo = bo.getBatchNo();
|
||||||
|
if (batchNo == null) {
|
||||||
|
throw new ServerException("场次Id不能为空");
|
||||||
|
}
|
||||||
|
PublishRecordWordData wordData = new PublishRecordWordData();
|
||||||
|
|
||||||
|
SysScalePublishVo publishVo = baseMapper.selectVoById(batchNo);
|
||||||
|
wordData.setSessionName(publishVo.getSessionName());
|
||||||
|
|
||||||
|
Date createTime = publishVo.getCreateTime();
|
||||||
|
Date expireTime = publishVo.getExpireTime();
|
||||||
|
wordData.setPublishTime(DateUtils.dateTime(createTime) + "~" + DateUtils.dateTime(expireTime));
|
||||||
|
wordData.setDataTime(DateUtils.getTime());
|
||||||
|
|
||||||
|
int classNum = publishVo.getDeptIds().size();
|
||||||
|
wordData.setClassNum(String.valueOf(classNum));
|
||||||
|
|
||||||
|
StatisticNumVo numVo = baseMapper.selectSexNumByBatchNo(batchNo);
|
||||||
|
int maleNum = numVo.getValue();
|
||||||
|
int femaleNum = numVo.getSpareValue();
|
||||||
|
int personTotal = maleNum + femaleNum;
|
||||||
|
int malePercent = processHalfUpPercent(maleNum, personTotal);
|
||||||
|
int femalePercent = processHalfUpPercent(femaleNum, personTotal);
|
||||||
|
wordData.setMaleNum(String.valueOf(maleNum));
|
||||||
|
wordData.setMalePercent(malePercent + "%");
|
||||||
|
wordData.setFemaleNum(String.valueOf(femaleNum));
|
||||||
|
wordData.setFemalePercent(femalePercent + "%");
|
||||||
|
ChartSingleSeriesRenderData sexChart = Charts.ofSingleSeries("", new String[]{"男生(人)", "女生(人)"})
|
||||||
|
.series("", new Integer[]{maleNum, femaleNum}).create();
|
||||||
|
wordData.setSexChart(sexChart);
|
||||||
|
|
||||||
|
int completeNum = recordMapper.selectCompleteNumByBatchNo(batchNo);
|
||||||
|
int completePercent = processHalfUpPercent(completeNum, personTotal);
|
||||||
|
int undoneNum = personTotal - completeNum;
|
||||||
|
int undonePercent = processHalfUpPercent(undoneNum, personTotal);
|
||||||
|
wordData.setCompleteNum(String.valueOf(completeNum));
|
||||||
|
wordData.setCompletePercent(completePercent + "%");
|
||||||
|
wordData.setUndoneNum(String.valueOf(undoneNum));
|
||||||
|
wordData.setUndonePercent(undonePercent + "%");
|
||||||
|
ChartSingleSeriesRenderData completeChart = Charts.ofSingleSeries("", new String[]{"完成计划(人)", "未完成计划(人)"})
|
||||||
|
.series("", new Integer[]{completeNum, undoneNum}).create();
|
||||||
|
wordData.setCompleteChart(completeChart);
|
||||||
|
|
||||||
|
int warnNum = recordMapper.selectWarnNumByBatchNo(batchNo);
|
||||||
|
int warnPercent = processHalfUpPercent(warnNum, personTotal);
|
||||||
|
int normalNum = personTotal - completeNum;
|
||||||
|
int normalPercent = processHalfUpPercent(normalNum, personTotal);
|
||||||
|
wordData.setWarnNum(String.valueOf(warnNum));
|
||||||
|
wordData.setWarnPercent(warnPercent + "%");
|
||||||
|
wordData.setNormalNum(String.valueOf(normalNum));
|
||||||
|
wordData.setNormalPercent(normalPercent + "%");
|
||||||
|
ChartSingleSeriesRenderData warnChart = Charts.ofSingleSeries("", new String[]{"触发预警(人)", "未触发预警(人)"})
|
||||||
|
.series("", new Integer[]{warnNum, normalNum}).create();
|
||||||
|
wordData.setWarnChart(warnChart);
|
||||||
|
|
||||||
|
List<StatisticNumVo> maxList = recordMapper.selectMaxWarnNumByBatchNo(batchNo);
|
||||||
|
Optional<StatisticNumVo> max = maxList.stream().max(Comparator.comparingInt(StatisticNumVo::getValue));
|
||||||
|
if (max.isPresent()) {
|
||||||
|
StatisticNumVo classVo = max.get();
|
||||||
|
String classWarnName = classVo.getName();
|
||||||
|
int classWarnNum = classVo.getValue();
|
||||||
|
int classWarnPercent = processHalfUpPercent(classWarnNum, personTotal);
|
||||||
|
int otherNum = personTotal - classWarnNum;
|
||||||
|
wordData.setClassWarnName(classWarnName);
|
||||||
|
wordData.setClassWarnNum(String.valueOf(classWarnNum));
|
||||||
|
wordData.setClassWarnPercent(classWarnPercent + "%");
|
||||||
|
ChartSingleSeriesRenderData classChart = Charts.ofSingleSeries("", new String[]{classWarnName + "(人)", "其他(人)"})
|
||||||
|
.series("", new Integer[]{classWarnNum, otherNum}).create();
|
||||||
|
wordData.setClassChart(classChart);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int processHalfUpPercent(int num, int total) {
|
||||||
|
return BigDecimal.valueOf(num)
|
||||||
|
.divide(BigDecimal.valueOf(total), 2, RoundingMode.HALF_UP)
|
||||||
|
.multiply(BigDecimal.valueOf(100)).intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
int i = BigDecimal.valueOf(0)
|
||||||
|
.divide(BigDecimal.valueOf(10), 2, RoundingMode.HALF_UP)
|
||||||
|
.multiply(BigDecimal.valueOf(100)).intValue();
|
||||||
|
System.out.println(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,7 +178,8 @@ public class WebServiceImpl implements IWebService {
|
||||||
if (used.contains(riskLevel)) {
|
if (used.contains(riskLevel)) {
|
||||||
SysWarnRecord wre = new SysWarnRecord();
|
SysWarnRecord wre = new SysWarnRecord();
|
||||||
wre.setBatchNo(scalePublishVo.getBatchNo());
|
wre.setBatchNo(scalePublishVo.getBatchNo());
|
||||||
wre.setUserId(getLoginUser().getUserId());
|
wre.setUserId(loginUser.getUserId());
|
||||||
|
wre.setDeptId(loginUser.getDeptId());
|
||||||
wre.setWarnTime(new Date());
|
wre.setWarnTime(new Date());
|
||||||
wre.setSituation(riskLevel);
|
wre.setSituation(riskLevel);
|
||||||
warnRecordService.insertByBo(wre);
|
warnRecordService.insertByBo(wre);
|
||||||
|
|
|
@ -97,7 +97,7 @@
|
||||||
left join sys_scale_publish sp on FIND_IN_SET(d.dept_id, sp.dept_ids)
|
left join sys_scale_publish sp on FIND_IN_SET(d.dept_id, sp.dept_ids)
|
||||||
where parent.parent_id = 100
|
where parent.parent_id = 100
|
||||||
group by parent.dept_id
|
group by parent.dept_id
|
||||||
order by `name`
|
order by parent.order_num
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectEvaluationNumByGrade" resultType="org.dromara.scale.domain.vo.StatisticNumVo">
|
<select id="selectEvaluationNumByGrade" resultType="org.dromara.scale.domain.vo.StatisticNumVo">
|
||||||
|
@ -107,7 +107,7 @@
|
||||||
left join sys_evaluation_record er on er.dept_id = d.dept_id
|
left join sys_evaluation_record er on er.dept_id = d.dept_id
|
||||||
where parent.parent_id = 100
|
where parent.parent_id = 100
|
||||||
group by parent.dept_id
|
group by parent.dept_id
|
||||||
order by `name`
|
order by parent.order_num
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectConclusion" resultType="org.dromara.scale.domain.vo.StatisticWarnVo">
|
<select id="selectConclusion" resultType="org.dromara.scale.domain.vo.StatisticWarnVo">
|
||||||
|
@ -124,7 +124,7 @@
|
||||||
left join sys_scale_factor_range sfr on sfr.range_id = ec.factor_range_id
|
left join sys_scale_factor_range sfr on sfr.range_id = ec.factor_range_id
|
||||||
where parent.parent_id = 100
|
where parent.parent_id = 100
|
||||||
group by parent.dept_id
|
group by parent.dept_id
|
||||||
order by `name`
|
order by parent.order_num
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectPublish" resultType="org.dromara.scale.domain.vo.StatisticPublishVo">
|
<select id="selectPublish" resultType="org.dromara.scale.domain.vo.StatisticPublishVo">
|
||||||
|
|
|
@ -10,7 +10,8 @@
|
||||||
s.cover,
|
s.cover,
|
||||||
s.questions_num,
|
s.questions_num,
|
||||||
o.url as `coverUrl`,
|
o.url as `coverUrl`,
|
||||||
if(er.status = 1, true, false) as `use`
|
if(er.status = 1, true, false) as `use`,
|
||||||
|
er.record_id
|
||||||
from sys_evaluation_record er
|
from sys_evaluation_record er
|
||||||
left join sys_scale s on s.scale_id = er.scale_id
|
left join sys_scale s on s.scale_id = er.scale_id
|
||||||
left join sys_oss o on o.oss_id = s.cover
|
left join sys_oss o on o.oss_id = s.cover
|
||||||
|
@ -58,4 +59,25 @@
|
||||||
from sys_evaluation_record
|
from sys_evaluation_record
|
||||||
where batch_no = #{batchNo}
|
where batch_no = #{batchNo}
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<select id="selectCompleteNumByBatchNo" resultType="int">
|
||||||
|
select count(*)
|
||||||
|
from sys_evaluation_record
|
||||||
|
where batch_no = #{batchNo}
|
||||||
|
and status = 1
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectWarnNumByBatchNo" resultType="int">
|
||||||
|
select count(*)
|
||||||
|
from sys_warn_record
|
||||||
|
where batch_no = #{batchNo}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectMaxWarnNumByBatchNo" resultType="org.dromara.scale.domain.vo.StatisticNumVo">
|
||||||
|
select d.dept_name as `name`, count(wr.warn_id) as `value`
|
||||||
|
from sys_warn_record wr
|
||||||
|
left join sys_dept d on d.dept_id = wr.dept_id
|
||||||
|
where wr.batch_no = #{batchNo}
|
||||||
|
group by wr.dept_id
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
@ -75,4 +75,12 @@
|
||||||
where status = 1
|
where status = 1
|
||||||
and find_in_set(#{userId}, user_ids)
|
and find_in_set(#{userId}, user_ids)
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectSexNumByBatchNo" resultType="org.dromara.scale.domain.vo.StatisticNumVo">
|
||||||
|
select count(if(u.sex = '0', 1, null)) as `value`,
|
||||||
|
count(if(u.sex = '1', 1, null)) as `spareValue`
|
||||||
|
from sys_evaluation_record er
|
||||||
|
left join sys_user u on u.user_id = er.user_id
|
||||||
|
where er.batch_no = #{batchNo};
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
Loading…
Reference in New Issue