测评端used数值错误修复;优化导出模板的展示

This commit is contained in:
cjw 2024-05-17 17:42:37 +08:00
parent 5c7fe24b18
commit 4250b6a948
6 changed files with 24 additions and 36 deletions

View File

@ -30,13 +30,14 @@ public class PublishRecordWordData {
private String femalePercent; private String femalePercent;
private ChartSingleSeriesRenderData sexChart; private ChartSingleSeriesRenderData sexChart;
private String recordNum;
private String completeNum; private String completeNum;
private String completePercent; private String completePercent;
private String undoneNum; private String undoneNum;
private String undonePercent; private String undonePercent;
private ChartSingleSeriesRenderData completeChart; private ChartSingleSeriesRenderData completeChart;
private String recordNum;
private String warnNum; private String warnNum;
private String warnPercent; private String warnPercent;
private String normalNum; private String normalNum;

View File

@ -314,7 +314,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
int recordNum = completeNum + undoneNum; int recordNum = completeNum + undoneNum;
int completePercent = processHalfUpPercent(completeNum, recordNum); int completePercent = processHalfUpPercent(completeNum, recordNum);
int undonePercent = processHalfUpPercent(undoneNum, recordNum); int undonePercent = processHalfUpPercent(undoneNum, recordNum);
wordData.setRecordNum(String.valueOf(recordNum));
wordData.setCompleteNum(String.valueOf(completeNum)); wordData.setCompleteNum(String.valueOf(completeNum));
wordData.setCompletePercent(completePercent + "%"); wordData.setCompletePercent(completePercent + "%");
wordData.setUndoneNum(String.valueOf(undoneNum)); wordData.setUndoneNum(String.valueOf(undoneNum));
@ -324,20 +324,21 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
wordData.setCompleteChart(completeChart); wordData.setCompleteChart(completeChart);
int warnNum = recordMapper.selectWarnNumByBatchNo(batchNo); int warnNum = recordMapper.selectWarnNumByBatchNo(batchNo);
int warnPercent = processHalfUpPercent(warnNum, personTotal); int warnPercent = processHalfUpPercent(warnNum, completeNum);
int normalNum = personTotal - warnNum; int normalNum = completeNum - warnNum;
int normalPercent = processHalfUpPercent(normalNum, personTotal); int normalPercent = processHalfUpPercent(normalNum, completeNum);
wordData.setRecordNum(String.valueOf(completeNum));
wordData.setWarnNum(String.valueOf(warnNum)); wordData.setWarnNum(String.valueOf(warnNum));
wordData.setWarnPercent(warnPercent + "%"); wordData.setWarnPercent(warnPercent + "%");
wordData.setNormalNum(String.valueOf(normalNum)); wordData.setNormalNum(String.valueOf(normalNum));
wordData.setNormalPercent(normalPercent + "%"); wordData.setNormalPercent(normalPercent + "%");
ChartSingleSeriesRenderData warnChart = Charts.ofSingleSeries("", new String[]{"触发预警(人)", "未触发预警(人)"}) boolean warnChartFlag = warnNum == 0 && normalNum == 0;
ChartSingleSeriesRenderData warnChart = Charts.ofSingleSeries(warnChartFlag ? "暂无数据" : "", new String[]{"触发预警(人)", "未触发预警(人)"})
.series("", new Integer[]{warnNum, normalNum}).create(); .series("", new Integer[]{warnNum, normalNum}).create();
wordData.setWarnChart(warnChart); wordData.setWarnChart(warnChart);
ChartSingleSeriesRenderData classChart = Charts.ofSingleSeries("暂无数据", new String[]{"班级"}) ChartSingleSeriesRenderData classChart = Charts.ofSingleSeries("暂无数据", new String[]{"班级"})
.series("", new Integer[]{0}).create(); .series("", new Integer[]{0}).create();
;
List<StatisticNumVo> warn4ClassList = recordMapper.selectWarn4Class(batchNo); List<StatisticNumVo> warn4ClassList = recordMapper.selectWarn4Class(batchNo);
if (ObjectUtil.isNotEmpty(warn4ClassList)) { if (ObjectUtil.isNotEmpty(warn4ClassList)) {
Optional<StatisticNumVo> maxOptional = warn4ClassList.stream().max(Comparator.comparingInt(StatisticNumVo::getValue)); Optional<StatisticNumVo> maxOptional = warn4ClassList.stream().max(Comparator.comparingInt(StatisticNumVo::getValue));
@ -347,20 +348,11 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
String classWarnName = max.getName(); String classWarnName = max.getName();
int classWarnPercent = processHalfUpPercent(classWarnNum, personTotal); int classWarnPercent = processHalfUpPercent(classWarnNum, personTotal);
int classOtherNum = personTotal - classWarnNum; int classOtherNum = personTotal - classWarnNum;
// WordClassWarn flag = new WordClassWarn();
// wordData.setFlag(flag);
// flag.setClassWarnName(classWarnName);
// flag.setClassWarnNum(String.valueOf(classWarnNum));
// flag.setClassWarnPercent(classWarnPercent + "%");
// ChartSingleSeriesRenderData classChart = Charts.ofSingleSeries("", new String[]{classWarnName + "(人)", "其他(人)"})
// .series("", new Integer[]{classWarnNum, classOtherNum}).create();
// flag.setClassChart(classChart);
wordData.setClassWarnName(classWarnName); wordData.setClassWarnName(classWarnName);
wordData.setClassWarnNum(String.valueOf(classWarnNum)); wordData.setClassWarnNum(String.valueOf(classWarnNum));
wordData.setClassWarnPercent(classWarnPercent + "%"); wordData.setClassWarnPercent(classWarnPercent + "%");
classChart = Charts.ofSingleSeries("", new String[]{classWarnName + "(人)", "其他(人)"}) classChart = Charts.ofSingleSeries("", new String[]{classWarnName + "(人)", "其他(人)"})
.series("", new Integer[]{classWarnNum, classOtherNum}).create(); .series("", new Integer[]{classWarnNum, classOtherNum}).create();
} }
} }
wordData.setClassChart(classChart); wordData.setClassChart(classChart);
@ -393,7 +385,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
} }
for (StatisticNumVo factor : factorList) { for (StatisticNumVo factor : factorList) {
RowRenderData one = Rows.of(factor.getName(), String.valueOf(factor.getValue()), RowRenderData one = Rows.of(factor.getName(), String.valueOf(factor.getValue()),
String.valueOf(factor.getSpareValue())).center().create(); String.valueOf(factor.getSpareValue())).textFontFamily("Hei").textFontSize(9).center().create();
factorTable.addRow(one); factorTable.addRow(one);
} }
WordWarn wordWarn = new WordWarn(); WordWarn wordWarn = new WordWarn();
@ -409,6 +401,9 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
} }
private int processHalfUpPercent(int num, int total) { private int processHalfUpPercent(int num, int total) {
if (total == 0) {
return 0;
}
return BigDecimal.valueOf(num) return BigDecimal.valueOf(num)
.divide(BigDecimal.valueOf(total), 2, RoundingMode.HALF_UP) .divide(BigDecimal.valueOf(total), 2, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(100)).intValue(); .multiply(BigDecimal.valueOf(100)).intValue();

View File

@ -10,7 +10,7 @@
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 `used`,
er.record_id 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
@ -88,32 +88,23 @@
</select> </select>
<select id="selectFactorNum" resultType="org.dromara.scale.domain.vo.StatisticNumVo"> <select id="selectFactorNum" resultType="org.dromara.scale.domain.vo.StatisticNumVo">
select sf.factor_name as `name`, count(ec.id) as `value`,0 as spareValue select sf.factor_name as `name`, count(er.record_id) as `value`, 0 as spareValue
from sys_scale_factor sf from sys_scale_factor sf
left join sys_evaluation_conclusion ec on ec.factor_id = sf.factor_id left join sys_evaluation_record er
left join sys_evaluation_record er on er.record_id = ec.record_id on er.scale_id = sf.scale_id and er.status = 1 and er.batch_no = #{batchNo}
where er.batch_no = #{batchNo} where sf.scale_id = #{scaleId}
and er.scale_id = #{scaleId}
and er.status = 1
and ec.status = 1
group by sf.factor_id group by sf.factor_id
</select> </select>
<select id="selectFactorWarnNum" resultType="org.dromara.scale.domain.vo.StatisticNumVo"> <select id="selectFactorWarnNum" resultType="org.dromara.scale.domain.vo.StatisticNumVo">
select sf.factor_name as `name`, count(ec.id) as `value` select sf.factor_name as `name`, count(er.record_id) as `value`
from sys_scale_factor sf from sys_scale_factor sf
left join sys_evaluation_conclusion ec on ec.factor_id = sf.factor_id left join sys_evaluation_conclusion ec on ec.factor_id = sf.factor_id and ec.status = 1 and ec.situation in
left join sys_evaluation_record er on er.record_id = ec.record_id
where er.batch_no = #{batchNo}
and er.scale_id = #{scaleId}
and er.status = 1
and ec.status = 1
and ec.situation in
<foreach item="situation" collection="list" open="(" separator="," close=")"> <foreach item="situation" collection="list" open="(" separator="," close=")">
#{situation} #{situation}
</foreach> </foreach>
left join sys_evaluation_record er on er.record_id = ec.record_id and er.status = 1 and er.batch_no = #{batchNo}
where sf.scale_id = #{scaleId}
group by sf.factor_id group by sf.factor_id
</select> </select>
</mapper> </mapper>

View File

@ -105,7 +105,8 @@ public class SysRoleController extends BaseController {
} }
if (roleService.updateRole(role) > 0) { if (roleService.updateRole(role) > 0) {
roleService.cleanOnlineUserByRole(role.getRoleId()); //暂时取消这个功能
// roleService.cleanOnlineUserByRole(role.getRoleId());
return R.ok(); return R.ok();
} }
return R.fail("修改角色'" + role.getRoleName() + "'失败,请联系管理员"); return R.fail("修改角色'" + role.getRoleName() + "'失败,请联系管理员");