文件下载
@ApiOperation("获取附件")
@GetMapping("/down")
public void getFile(@Valid String filePaht, BindingResult error, HttpServletResponse response) {
valid(error);
try {
final String fileName = getFileName(filePaht);
byte[] data = workflowProcessService.getFilePath(filePaht);
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1"));
response.setHeader("Content-Length", String.valueOf(data.length));
response.setHeader("Content-type","application/octet-stream");
ServletOutputStream out = response.getOutputStream();
out.write(data);
out.flush();
} catch (WorkflowException | IOException e) {
log.error(">>> 下载附件文件发生异常!【{}】", request.getFilePath(), e);
}
}
支持率,反对率的计算公式
public Map<String, String> findCountByProject(String proj_uuid) {
//获取项目的总份数
ProjectInfo projectInfo = projectService.queryProjectByUuid(proj_uuid);
// if(Constants.STATUS_VOTE.equals(projectInfo.getProjStatus())){
// 暂时不做状态判断,还不清楚实际业务业务中是否存在此状态
// }
//获取项目的总销售份数
Long soldCount = businessService.queryTotalCountByProjUuid(proj_uuid);
//获取项目的支持总份数
Long agreeCount = voteDao.findCountByProject(proj_uuid, "1");
//获取项目的反对总份数
Long notAgreeCount = voteDao.findCountByProject(proj_uuid, "0");
//项目预售总份数
BigDecimal total = new BigDecimal(projectInfo.getCrowNumber());
//实际销售总份数-支持份数
BigDecimal b1 = new BigDecimal(soldCount).subtract(new BigDecimal(agreeCount));
//(实际销售总份数-支持份数)/项目总份数
BigDecimal b2 = b1.divide(total,4,RoundingMode.HALF_UP);
//通过率= 1 - (实际销售总份数-支持份数)/项目总份数
BigDecimal agreeRates = new BigDecimal("1").subtract(b2);
//反对率= 反对总份数/项目总份数
BigDecimal opposeRates = new BigDecimal(notAgreeCount).divide(total,4,RoundingMode.HALF_UP);
Map<String,String> result = new HashMap<String, String>();
result.put("agrss", agreeCount.toString());//通过总票数
result.put("oppose", notAgreeCount.toString());//反对总票数
result.put("agrssRates", agreeRates.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toString());//通过数占总份数比率
result.put("opposeRates", opposeRates.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toString());//反对数占总份数比率
return result;
}