模板格式优化
This commit is contained in:
parent
98f721ecd7
commit
bc3c0669d2
|
@ -156,6 +156,17 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||
return hour + "小时" + min + "分钟" + sec + "秒";
|
||||
}
|
||||
|
||||
public static String getDatePoor4MinSec(Date startDate, Date endDate) {
|
||||
Instant startInstant = startDate.toInstant();
|
||||
LocalDateTime start = LocalDateTime.ofInstant(startInstant, ZoneId.systemDefault());
|
||||
Instant endInstant = endDate.toInstant();
|
||||
LocalDateTime end = LocalDateTime.ofInstant(endInstant, ZoneId.systemDefault());
|
||||
Duration duration = Duration.between(start, end);
|
||||
long min = duration.toMinutes();
|
||||
long sec = duration.getSeconds() % 60;
|
||||
return min + "分钟" + sec + "秒";
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加 LocalDateTime ==> Date
|
||||
*/
|
||||
|
@ -190,5 +201,4 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -42,11 +42,9 @@ public class PublishRecordWordData {
|
|||
private String warnPercent;
|
||||
private String normalNum;
|
||||
private String normalPercent;
|
||||
private ChartSingleSeriesRenderData warnChart;
|
||||
private ChartSingleSeriesRenderData warnRecordChat;
|
||||
|
||||
private String classWarnName;
|
||||
private String classWarnNum;
|
||||
private String classWarnPercent;
|
||||
private WordClass classFlag;
|
||||
private ChartSingleSeriesRenderData classChart;
|
||||
private List<WordWarn> warnCharts;
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package org.dromara.scale.domain.word;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* <p>TODO<p>
|
||||
*
|
||||
* @author cjw
|
||||
* @version V1.0.0
|
||||
* @date 2024/5/23 15:00
|
||||
*/
|
||||
@Data
|
||||
public class WordClass {
|
||||
private String classWarnName;
|
||||
private String classWarnNum;
|
||||
private String classWarnPercent;
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package org.dromara.scale.domain.word;
|
||||
|
||||
import com.deepoove.poi.data.ChartMultiSeriesRenderData;
|
||||
import com.deepoove.poi.data.TableRenderData;
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -16,4 +17,5 @@ public class WordWarn {
|
|||
|
||||
private String scaleName;
|
||||
private TableRenderData warnTable;
|
||||
private ChartMultiSeriesRenderData warnChart;
|
||||
}
|
||||
|
|
|
@ -43,8 +43,7 @@ public interface SysEvaluationRecordMapper extends BaseMapperPlus<SysEvaluationR
|
|||
|
||||
List<StatisticNumVo> selectWarn4Class(Long batchNo);
|
||||
|
||||
List<StatisticNumVo> selectFactorNum(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId);
|
||||
List<StatisticNumVo> selectFactorWarnNum(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId,@Param("list")List<Integer> warnList);
|
||||
List<StatisticNumVo> selectFactorWarnNum(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId);
|
||||
|
||||
int selectUndoneNumByBatchNoAndUserId(@Param("batchNo") Long batchNo,@Param("userId") Long userId);
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi
|
|||
Date createTime = sysEvaluationRecord.getCreateTime();
|
||||
Date updateTime = sysEvaluationRecord.getUpdateTime();
|
||||
wordData.setCreateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, createTime));
|
||||
wordData.setUseTime(DateUtils.getDatePoor(createTime, updateTime));
|
||||
wordData.setUseTime(DateUtils.getDatePoor4MinSec(createTime, updateTime));
|
||||
|
||||
SysUserVo user = userMapper.selectUserById(userId);
|
||||
wordData.setNickName(user.getNickName());
|
||||
|
@ -135,7 +135,7 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi
|
|||
borderStyle.setSize(4);
|
||||
borderStyle.setType(XWPFTable.XWPFBorderType.SINGLE);
|
||||
RowRenderData factorHeader = Rows.of("名称", "包含题目", "原始分", "得分", "命中区间", "区间描述").bgColor("F2F2F2").center()
|
||||
.textColor("7F7f7F").textFontFamily("Hei").textFontSize(9).create();
|
||||
.textColor("7F7f7F").textFontFamily("宋体").textFontSize(9).create();
|
||||
TableRenderData factorTable = Tables.ofA4MediumWidth().addRow(factorHeader).border(borderStyle)
|
||||
.width(14.63d, null).center().create();
|
||||
//一并处理数据
|
||||
|
@ -150,16 +150,29 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi
|
|||
StringBuilder range = new StringBuilder();
|
||||
BigDecimal minValue = answerVo.getMinValue();
|
||||
BigDecimal maxValue = answerVo.getMaxValue();
|
||||
boolean minFlag = false;
|
||||
boolean maxFlag = false;
|
||||
if (minValue != null) {
|
||||
range.append(minValue.doubleValue());
|
||||
minFlag = true;
|
||||
}
|
||||
range.append("~");
|
||||
if (maxValue != null) {
|
||||
range.append(maxValue.doubleValue());
|
||||
maxFlag = true;
|
||||
}
|
||||
if (minFlag) {
|
||||
if (maxFlag) {
|
||||
range.append(minValue.doubleValue());
|
||||
range.append("-");
|
||||
range.append(maxValue.doubleValue());
|
||||
} else {
|
||||
range.append(">=").append(minValue.doubleValue());
|
||||
}
|
||||
} else {
|
||||
range.append(maxValue.doubleValue()).append("<=");
|
||||
}
|
||||
//处理因子得分表格
|
||||
RowRenderData one = Rows.of(answerVo.getFactorName(), answerVo.getQuestionNum().toString(),
|
||||
answerVo.getTotalScore().toString(), answerVo.getScore().toString(), range.toString(), answerVo.getRangeName()).center().create();
|
||||
answerVo.getTotalScore().toString(), answerVo.getScore().toString(), range.toString(), answerVo.getRangeName())
|
||||
.textFontFamily("宋体").textFontSize(9).center().create();
|
||||
factorTable.addRow(one);
|
||||
//处理测评结果
|
||||
WordFactor wordFactor = new WordFactor();
|
||||
|
@ -169,7 +182,7 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi
|
|||
//判断激活,放到首位并添加建议
|
||||
if (answerVo.getStatus() == 1) {
|
||||
factors.addFirst(wordFactor);
|
||||
stringBuilder.append(HtmlUtil.cleanHtmlTag(answerVo.getEvalPropose())).append("\n");
|
||||
stringBuilder.append(HtmlUtil.cleanHtmlTag(answerVo.getEvalPropose())).append("\n").append("\n").append("\r");
|
||||
} else {
|
||||
factors.add(wordFactor);
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.dromara.scale.domain.bo.BaseQueryBo;
|
|||
import org.dromara.scale.domain.bo.SysScalePublishBo;
|
||||
import org.dromara.scale.domain.vo.*;
|
||||
import org.dromara.scale.domain.word.PublishRecordWordData;
|
||||
import org.dromara.scale.domain.word.WordClass;
|
||||
import org.dromara.scale.domain.word.WordWarn;
|
||||
import org.dromara.scale.mapper.SysEvaluationRecordMapper;
|
||||
import org.dromara.scale.mapper.SysScaleMapper;
|
||||
|
@ -123,7 +124,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
|||
int i = baseMapper.selectCountScalePublish();
|
||||
String s = configService.selectConfigByKey("sys.publish.limit");
|
||||
int limit = Integer.parseInt(s);
|
||||
if(limit != -1 && i>=limit){
|
||||
if (limit != -1 && i >= limit) {
|
||||
throw new ServiceException("发布数量超出系统限制");
|
||||
}
|
||||
LoginUser loginUser = getLoginUser();
|
||||
|
@ -350,11 +351,12 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
|||
boolean warnChartFlag = warnNum == 0 && normalNum == 0;
|
||||
ChartSingleSeriesRenderData warnChart = Charts.ofSingleSeries(warnChartFlag ? "暂无数据" : "", new String[]{"触发预警(人)", "未触发预警(人)"})
|
||||
.series("", new Integer[]{warnNum, normalNum}).create();
|
||||
wordData.setWarnChart(warnChart);
|
||||
wordData.setWarnRecordChat(warnChart);
|
||||
|
||||
ChartSingleSeriesRenderData classChart = Charts.ofSingleSeries("暂无数据", new String[]{"班级"})
|
||||
.series("", new Integer[]{0}).create();
|
||||
List<StatisticNumVo> warn4ClassList = recordMapper.selectWarn4Class(batchNo);
|
||||
WordClass wordClass = null;
|
||||
if (ObjectUtil.isNotEmpty(warn4ClassList)) {
|
||||
Optional<StatisticNumVo> maxOptional = warn4ClassList.stream().max(Comparator.comparingInt(StatisticNumVo::getValue));
|
||||
if (maxOptional.isPresent()) {
|
||||
|
@ -363,49 +365,55 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
|||
String classWarnName = max.getName();
|
||||
int classWarnPercent = processHalfUpPercent(classWarnNum, personTotal);
|
||||
int classOtherNum = personTotal - classWarnNum;
|
||||
wordData.setClassWarnName(classWarnName);
|
||||
wordData.setClassWarnNum(String.valueOf(classWarnNum));
|
||||
wordData.setClassWarnPercent(classWarnPercent + "%");
|
||||
wordClass = new WordClass();
|
||||
wordClass.setClassWarnName(classWarnName);
|
||||
wordClass.setClassWarnNum(String.valueOf(classWarnNum));
|
||||
wordClass.setClassWarnPercent(classWarnPercent + "%");
|
||||
classChart = Charts.ofSingleSeries("", new String[]{classWarnName + "(人)", "其他(人)"})
|
||||
.series("", new Integer[]{classWarnNum, classOtherNum}).create();
|
||||
}
|
||||
}
|
||||
wordData.setClassFlag(wordClass);
|
||||
wordData.setClassChart(classChart);
|
||||
|
||||
List<String> scaleIds = publishVo.getScaleIds();
|
||||
List<String> scaleNames = publishVo.getScaleNames();
|
||||
int size = scaleIds.size();
|
||||
List<Integer> warnList = warnMapper.selectUseConfig();
|
||||
List<WordWarn> wordWarnList = new ArrayList<>(size);
|
||||
for (int i = 0; i < size; i++) {
|
||||
BorderStyle borderStyle = new BorderStyle();
|
||||
borderStyle.setColor("A6A6A6");
|
||||
borderStyle.setSize(4);
|
||||
borderStyle.setType(XWPFTable.XWPFBorderType.SINGLE);
|
||||
RowRenderData factorHeader = Rows.of("因子名称", "样本总数", "预警数").bgColor("F2F2F2").center()
|
||||
.textColor("7F7f7F").textFontFamily("Hei").textFontSize(9).create();
|
||||
RowRenderData factorHeader = Rows.of("", "样本总数", "占比").bgColor("F2F2F2").center()
|
||||
.textColor("7F7f7F").textFontFamily("宋体").textFontSize(9).create();
|
||||
TableRenderData factorTable = Tables.ofA4MediumWidth().addRow(factorHeader).border(borderStyle)
|
||||
.width(14.63d, null).center().create();
|
||||
String scaleName = scaleNames.get(i);
|
||||
String s = scaleIds.get(i);
|
||||
Long scaleId = Long.parseLong(s);
|
||||
List<StatisticNumVo> factorList = recordMapper.selectFactorNum(batchNo, scaleId);
|
||||
List<StatisticNumVo> factorWarnList = recordMapper.selectFactorWarnNum(batchNo, scaleId, warnList);
|
||||
for (StatisticNumVo factor : factorList) {
|
||||
for (StatisticNumVo factorWarn : factorWarnList) {
|
||||
if (factor.getName().equals(factorWarn.getName())) {
|
||||
factor.setSpareValue(factorWarn.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
for (StatisticNumVo factor : factorList) {
|
||||
RowRenderData one = Rows.of(factor.getName(), String.valueOf(factor.getValue()),
|
||||
String.valueOf(factor.getSpareValue())).textFontFamily("Hei").textFontSize(9).center().create();
|
||||
List<StatisticNumVo> factorWarnList = recordMapper.selectFactorWarnNum(batchNo, scaleId);
|
||||
int warnSize = factorWarnList.size();
|
||||
String[] strings = new String[warnSize];
|
||||
Integer[] integers = new Integer[warnSize];
|
||||
for (int j = 0; j < warnSize; j++) {
|
||||
StatisticNumVo factor = factorWarnList.get(j);
|
||||
int value = factor.getValue();
|
||||
int valuePercent = processHalfUpPercent(value, personTotal);
|
||||
RowRenderData one = Rows.of(factor.getName(), String.valueOf(value), valuePercent + "%")
|
||||
.textFontFamily("宋体").textFontSize(9).center().create();
|
||||
factorTable.addRow(one);
|
||||
strings[j] = factor.getName();
|
||||
integers[j] = value;
|
||||
}
|
||||
ChartMultiSeriesRenderData chart = Charts
|
||||
.ofMultiSeries("", strings)
|
||||
.addSeries("样本数", integers)
|
||||
.create();
|
||||
WordWarn wordWarn = new WordWarn();
|
||||
wordWarn.setScaleName(scaleName);
|
||||
wordWarn.setWarnTable(factorTable);
|
||||
wordWarn.setWarnChart(chart);
|
||||
wordWarnList.add(wordWarn);
|
||||
}
|
||||
wordData.setWarnCharts(wordWarnList);
|
||||
|
|
|
@ -224,7 +224,7 @@ public class WebServiceImpl implements IWebService {
|
|||
evalConclusion.setRecordId(recordId);
|
||||
evalConclusion.setStatus(StatusEnum.DISABLED.getValue());
|
||||
evalConclusion.setScore(BigDecimal.ZERO);
|
||||
list.add(evalConclusion);
|
||||
|
||||
|
||||
List<String> questionNum = questionMapByFactor.get(factorId.toString());
|
||||
List<String> questionIds = new ArrayList<>();
|
||||
|
@ -307,7 +307,10 @@ public class WebServiceImpl implements IWebService {
|
|||
}
|
||||
if (used.contains(evalConclusion.getSituation())) {
|
||||
evalConclusion.setWarnStatus(1);
|
||||
}else {
|
||||
evalConclusion.setWarnStatus(0);
|
||||
}
|
||||
list.add(evalConclusion);
|
||||
}
|
||||
//处理维度问题及status
|
||||
//量表
|
||||
|
|
|
@ -91,23 +91,12 @@
|
|||
GROUP BY d.dept_id
|
||||
</select>
|
||||
|
||||
<select id="selectFactorNum" resultType="org.dromara.scale.domain.vo.StatisticNumVo">
|
||||
select sf.factor_name as `name`, count(er.record_id) as `value`, 0 as spareValue
|
||||
from sys_scale_factor sf
|
||||
left join sys_evaluation_record er
|
||||
on er.scale_id = sf.scale_id and er.status = 1 and er.batch_no = #{batchNo}
|
||||
where sf.scale_id = #{scaleId}
|
||||
group by sf.factor_id
|
||||
</select>
|
||||
|
||||
<select id="selectFactorWarnNum" resultType="org.dromara.scale.domain.vo.StatisticNumVo">
|
||||
select sf.factor_name as `name`, count(er.record_id) as `value`
|
||||
select sf.factor_name as `name`, count(ec.id) as `value`
|
||||
from sys_scale_factor sf
|
||||
left join sys_evaluation_conclusion ec on ec.factor_id = sf.factor_id and ec.status = 1 and ec.situation in
|
||||
<foreach item="situation" collection="list" open="(" separator="," close=")">
|
||||
#{situation}
|
||||
</foreach>
|
||||
left join sys_evaluation_record er on er.record_id = ec.record_id and er.status = 1 and er.batch_no = #{batchNo}
|
||||
left join sys_evaluation_record er on er.scale_id = sf.scale_id and er.batch_no = #{batchNo}
|
||||
left join sys_evaluation_conclusion ec
|
||||
on ec.record_id = er.record_id and ec.factor_id = sf.factor_id and ec.warn_status = 1
|
||||
where sf.scale_id = #{scaleId}
|
||||
group by sf.factor_id
|
||||
</select>
|
||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue