上传国家虚拟仿真接口

master
yz 1 year ago
parent 786b09b4f0
commit 149f656ee1

@ -0,0 +1,162 @@
package com.sztzjy.fund_investment.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.sztzjy.fund_investment.annotation.AnonymousAccess;
import com.sztzjy.fund_investment.service.IIlabService;
import io.swagger.annotations.ApiParam;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.*;
import java.io.*;
import java.net.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
import java.util.Map;
import java.util.Scanner;
@RestController
@RequestMapping("/stu/ilabController")
public class IlabController {
@Autowired
IIlabService iIlabService;
String appid = "107223";
String secret = "5F2pfvRDXq5ybF4imPA02TJZfaYA1hPXTTvPjtwk+OE=";
//获取AccessToken
@GetMapping("getAccessToken")
@AnonymousAccess
public void getAccessToken(@ApiParam("ticket") @RequestParam String ticket) {
Map<String,String> map=iIlabService.getAccessToken(ticket);
}
@PostMapping("dataUpload")
@AnonymousAccess
public void dataUpload(@ApiParam("access_token") @RequestParam String accessToken) throws IOException {
accessToken = URLEncoder.encode(accessToken);
//定义发送数据
String requestBody = "{\n" +
" \"username\": \"mj_993115\",\n" +
" \"title\": \"股权基金投资虚拟仿真实验\",\n" +
" \"status\": 1,\n" +
" \"score\": 100,\n" +
" \"startTime\": 1704252457000,\n" +
" \"endTime\": 1704252467000,\n" +
" \"timeUsed\": 100,\n" +
" \"appid\": \"107223\",\n" +
" \"originId\": \"1\",\n" +
" \"steps\": [\n" +
" {\n" +
" \"seq\": 1,\n" +
" \"title\": \"实验步骤1\",\n" +
" \"startTime\": 1704252457000,\n" +
" \"endTime\": 1704252467000,\n" +
" \"timeUsed\": 100,\n" +
" \"expectTime\": 100,\n" +
" \"maxScore\": 10,\n" +
" \"score\": 10,\n" +
" \"repeatCount\": 1,\n" +
" \"evaluation\": \"优\",\n" +
" \"scoringModel\": \"赋分模型\",\n" +
" \"remarks\": \"备注\"\n" +
" }\n" +
" ]\n" +
"}\n" +
"\n";
//定义接收数据
JSONObject result = new JSONObject();
String url = "https://www.ilab-x.com/open/api/v2/data_upload?access_token=rnVop9mKUfzuJm656m%2BTLLGy2RIx7JFUQ5xnGJ18xSC3P5yQizr5gVmnUpGiWbNQIVj9z2AnFOXXA3L0LUKaRuuYBu5cHJeL1AHvjbxanwQ%3D";
HttpPost httpPost = new HttpPost(url);
CloseableHttpClient client = HttpClients.createDefault();
//请求参数转JOSN字符串
StringEntity entity = new StringEntity(requestBody, "UTF-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
try {
HttpResponse response = client.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
result = JSON.parseObject(EntityUtils.toString(response.getEntity(), "UTF-8"));
}
} catch (IOException e) {
e.printStackTrace();
result.put("error", "连接错误!");
}
//关闭连接
try {
client.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
//实验报告上传
@PostMapping("attachmentUpload")
@AnonymousAccess
public void attachmentUpload(@ApiParam("access_token") @RequestParam String accessToken) throws IOException {
String url = "https://www.ilab-x.com/open/api/v2/attachment_upload?access_token=rnVop9mKUfzuJm656m%2BTLLGy2RIx7JFUQ5xnGJ18xSDnVYvcUct5d6rGXoY8hgmbwAOzee3xBPgBfBrc3ZMDfZEizkxP0rkmGyBDVojBPTI%3D&appid=107223&originId=1&filename=abc.pdf&title=%E6%B5%8B%E8%AF%95%E5%AE%9E%E9%AA%8C%E6%8A%A5%E5%91%8A";
String filePath = "C:\\Users\\86132\\Desktop\\abc.pdf";
File file = new File(filePath);
URL apiUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) apiUrl.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
String boundary = Long.toHexString(System.currentTimeMillis());
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
try (
DataOutputStream request = new DataOutputStream(connection.getOutputStream());
FileInputStream fileInput = new FileInputStream(file)
) {
request.writeBytes("--" + boundary + "\r\n");
request.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + file.getName() + "\"\r\n");
request.writeBytes("Content-Type: application/pdf\r\n\r\n");
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = fileInput.read(buffer)) != -1) {
request.write(buffer, 0, bytesRead);
}
request.writeBytes("\r\n--" + boundary + "--\r\n");
}
int responseCode = connection.getResponseCode();
System.out.println("Response Code : " + responseCode);
InputStream responseStream;
if (responseCode == HttpURLConnection.HTTP_OK) {
responseStream = connection.getInputStream();
} else {
responseStream = connection.getErrorStream();
}
if (responseStream != null) {
try (Scanner scanner = new Scanner(responseStream)) {
String responseBody = scanner.useDelimiter("\\A").hasNext() ? scanner.next() : "";
System.out.println("Response : " + responseBody); // Entire response from the server
}
}
}
}

@ -665,32 +665,32 @@ public class ProjectValuationController {
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getMarketPrice().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getMarketPrice()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getEarnings().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getEarnings()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getGrowthRate().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getGrowthRate()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getGrowthRate1().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getGrowthRate1()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getEarnings1().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getEarnings1()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(valuePerShare.toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(valuePerShare), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
@ -719,27 +719,27 @@ public class ProjectValuationController {
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getMarketPrice().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getMarketPrice()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getNetWorth().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getNetWorth()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getNetInterest().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getNetInterest()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getNetInterest1().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getNetInterest1()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getNetWorth1().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getNetWorth1()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
@ -773,27 +773,27 @@ public class ProjectValuationController {
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getMarketPrice().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getMarketPrice()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getOperatingIncome().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getOperatingIncome()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getNetOperatinginterestRate().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getNetOperatinginterestRate()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getNetOperatinginterestRate1().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getNetOperatinginterestRate1()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(projectValuationList.get(i).getOperatingIncome1().toString(), 0, 1.5f));
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(projectValuationList.get(i).getOperatingIncome1()), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
@ -807,5 +807,495 @@ public class ProjectValuationController {
return table;
}
@GetMapping("exportFCFFPDF")
@ApiOperation("绝对估值法FCFF-PDF导出")
@AnonymousAccess
public void exportFCFFPDF(@ApiParam("HttpServletResponse") HttpServletResponse response,
@ApiParam("flow_id") @RequestParam String flowId) throws IOException, DocumentException {
Document document = new Document();
// 创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(("绝对估值报告" + "." + "pdf"), CharsetUtil.UTF_8));
PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream());
writer.setPageEvent(new HeaderAndFooterEvent());
document.open();
HeaderAndFooterEvent.tpl = writer.getDirectContent().createTemplate(500, 500);
HeaderAndFooterEvent.PAGE_NUMBER = true;//实现页眉跟页脚
HeaderAndFooterEvent.HeaderLeft = "";//左上角
HeaderAndFooterEvent.HeaderRight = "";//右上角
HeaderAndFooterEvent.FooterLeft = "";//左下角
HeaderAndFooterEvent.FooterRight = "深圳市天择教育科技有限公司";//右下角
HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "宋体", 25, Font.BOLD);
//添加一个空段落来占位五个参数分别为内容对齐方式1为居中0为居左2为居右段后空行数段前空行数行间距
document.add(HeaderAndFooterEvent.AddParagraph(" ", 1, 200, 0, 1.5f));
document.add(HeaderAndFooterEvent.AddParagraph("天择投资银行业务教学系统", 1, 1.5f));
HeaderAndFooterEvent.SetFont(BaseColor.GRAY, "宋体", 18, Font.BOLD);
document.add(HeaderAndFooterEvent.AddParagraph("绝对估值分析报告-企业自由现金流FCFF", 1, 1.5f));
document.newPage(); //换第二页 目录
PdfPTable table = new PdfPTable(6);
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell1= new PdfPCell(HeaderAndFooterEvent.AddParagraph("输入核心参数", 0, 1.5f));
cell1.setColspan(2); // 设置单元格跨两行
table.addCell(cell1);
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell2= new PdfPCell(HeaderAndFooterEvent.AddParagraph("预测值", 0, 1.5f));
cell2.setColspan(4); // 设置单元格跨四行
table.addCell(cell2);
ArrayList<String> headList = new ArrayList<>();
headList.add("假设项目");
headList.add("2020-12-31");
headList.add("预测项目");
headList.add("2021-12-31");
headList.add("2022-12-31");
headList.add("2023-12-31");
for (int i = 0; i < headList.size(); i++) {
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(headList.get(i), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
}
EduFCFF fcff=eduFCFFService.selectFCFFByFlowId(flowId);
List<FCFFFCFEDto> list=new ArrayList<>();
List<String> jsxmList=new ArrayList<>();
List<BigDecimal> lastThreeYearList=new ArrayList<>();
List<String> ycxm=new ArrayList<>();
List<BigDecimal> lastYear=new ArrayList<>();
List<BigDecimal> lastTwoYear=new ArrayList<>();
List<BigDecimal> thisYear=new ArrayList<>();
jsxmList.add("营业收入");
jsxmList.add("税后经营净利润");
jsxmList.add("折旧摊销");
jsxmList.add("营业现金毛流量");
jsxmList.add("经营营运资本增加");
jsxmList.add("营业现金净流量");
jsxmList.add("资本支出");
jsxmList.add("企业自由现金流");
lastThreeYearList.add(fcff.getYysr2020());
lastThreeYearList.add(fcff.getShjyjlr2020());
lastThreeYearList.add(fcff.getZjtx2020());
lastThreeYearList.add(fcff.getYyxjmll2020());
lastThreeYearList.add(fcff.getJyyyzbzj2020());
lastThreeYearList.add(fcff.getYyxjjll2020());
lastThreeYearList.add(fcff.getZbzc2020());
lastThreeYearList.add(fcff.getQyzyxjl2020());
ycxm.add("销售增长率");
ycxm.add("营业收入");
ycxm.add("税后经营净利润");
ycxm.add("折旧摊销");
ycxm.add("营业现金毛流量");
ycxm.add("经营营运资本增加");
ycxm.add("营业现金净流量");
ycxm.add("资本支出");
ycxm.add("企业自由现金流");
ycxm.add("债务资本比重Wd");
ycxm.add("债务资本成本Rd");
ycxm.add("股权资本比重We");
ycxm.add("股权资本成本Re");
ycxm.add("公司资本成本WACC");
ycxm.add("企业价值");
lastTwoYear.add(fcff.getXszzl2021());
lastTwoYear.add(fcff.getYysr2021());
lastTwoYear.add(fcff.getShjyjlr2021());
lastTwoYear.add(fcff.getZjtx2021());
lastTwoYear.add(fcff.getYyxjmll2021());
lastTwoYear.add(fcff.getJyyyzbzj2021());
lastTwoYear.add(fcff.getYyxjjll2021());
lastTwoYear.add(fcff.getZbzc2021());
lastTwoYear.add(fcff.getQyzyxjl2021());
lastTwoYear.add(fcff.getZwzbbzWd2021());
lastTwoYear.add(fcff.getZwzbcbRd2021());
lastTwoYear.add(fcff.getGqzbbzWb2021());
lastTwoYear.add(fcff.getGqzbcbRe2021());
lastTwoYear.add(fcff.getGszbcbWacc2021());
lastTwoYear.add(fcff.getQyjz2021());
lastYear.add(fcff.getXszzl2022());
lastYear.add(fcff.getYysr2022());
lastYear.add(fcff.getShjyjlr2022());
lastYear.add(fcff.getZjtx2022());
lastYear.add(fcff.getYyxjmll2022());
lastYear.add(fcff.getJyyyzbzj2022());
lastYear.add(fcff.getYyxjjll2022());
lastYear.add(fcff.getZbzc2022());
lastYear.add(fcff.getQyzyxjl2022());
lastYear.add(fcff.getZwzbbzWd2022());
lastYear.add(fcff.getZwzbcbRd2022());
lastYear.add(fcff.getGqzbbzWb2022());
lastYear.add(fcff.getGqzbcbRe2022());
lastYear.add(fcff.getGszbcbWacc2022());
lastYear.add(fcff.getQyjz2022());
thisYear.add(fcff.getXszzl2023());
thisYear.add(fcff.getYysr2023());
thisYear.add(fcff.getShjyjlr2023());
thisYear.add(fcff.getZjtx2023());
thisYear.add(fcff.getYyxjmll2013());
thisYear.add(fcff.getJyyyzbzj2023());
thisYear.add(fcff.getYyxjjll2023());
thisYear.add(fcff.getZbzc2023());
thisYear.add(fcff.getQyzyxjl2023());
thisYear.add(fcff.getZwzbbzWd2023());
thisYear.add(fcff.getZwzbcbRd2023());
thisYear.add(fcff.getGqzbbzWb2023());
thisYear.add(fcff.getGqzbcbRe2023());
thisYear.add(fcff.getGszbcbWacc2023());
thisYear.add(fcff.getQyjz2023());
for (int i = 0; i < 8; i++) {
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(jsxmList.get(i), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastThreeYearList.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(ycxm.get(i), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastTwoYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(thisYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
}
for (int i = 8; i < 15; i++) {
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph("", 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph("", 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(ycxm.get(i), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastTwoYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(thisYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
}
document.add(table);
document.close();
}
@GetMapping("exportFCFEPDF")
@ApiOperation("绝对估值法FCFE-PDF导出")
@AnonymousAccess
public void exportFCFEPDF(@ApiParam("HttpServletResponse") HttpServletResponse response,
@ApiParam("flow_id") @RequestParam String flowId) throws IOException, DocumentException {
Document document = new Document();
// 创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(("绝对估值报告" + "." + "pdf"), CharsetUtil.UTF_8));
PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream());
writer.setPageEvent(new HeaderAndFooterEvent());
document.open();
HeaderAndFooterEvent.tpl = writer.getDirectContent().createTemplate(500, 500);
HeaderAndFooterEvent.PAGE_NUMBER = true;//实现页眉跟页脚
HeaderAndFooterEvent.HeaderLeft = "";//左上角
HeaderAndFooterEvent.HeaderRight = "";//右上角
HeaderAndFooterEvent.FooterLeft = "";//左下角
HeaderAndFooterEvent.FooterRight = "深圳市天择教育科技有限公司";//右下角
HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "宋体", 25, Font.BOLD);
//添加一个空段落来占位五个参数分别为内容对齐方式1为居中0为居左2为居右段后空行数段前空行数行间距
document.add(HeaderAndFooterEvent.AddParagraph(" ", 1, 200, 0, 1.5f));
document.add(HeaderAndFooterEvent.AddParagraph("天择投资银行业务教学系统", 1, 1.5f));
HeaderAndFooterEvent.SetFont(BaseColor.GRAY, "宋体", 18, Font.BOLD);
document.add(HeaderAndFooterEvent.AddParagraph("绝对估值分析报告-股权自由现金流FCFF", 1, 1.5f));
document.newPage(); //换第二页 目录
PdfPTable table = new PdfPTable(6);
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell1= new PdfPCell(HeaderAndFooterEvent.AddParagraph("输入核心参数", 0, 1.5f));
cell1.setColspan(2); // 设置单元格跨两行
table.addCell(cell1);
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell2= new PdfPCell(HeaderAndFooterEvent.AddParagraph("预测值", 0, 1.5f));
cell2.setColspan(4); // 设置单元格跨四行
table.addCell(cell2);
ArrayList<String> headList = new ArrayList<>();
headList.add("假设项目");
headList.add("2020-12-31");
headList.add("预测项目");
headList.add("2021-12-31");
headList.add("2022-12-31");
headList.add("2023-12-31");
for (int i = 0; i < headList.size(); i++) {
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(headList.get(i), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
}
EduFCFE fcfe = eduFCFEService.selectFCFEByFlowId(flowId);
List<String> jsxmList=new ArrayList<>();
List<BigDecimal> lastThreeYearList=new ArrayList<>();
List<String> ycxm=new ArrayList<>();
List<BigDecimal> lastYear=new ArrayList<>();
List<BigDecimal> lastTwoYear=new ArrayList<>();
List<BigDecimal> thisYear=new ArrayList<>();
jsxmList.add("营业收入");
jsxmList.add("净负债");
jsxmList.add("股东权益");
jsxmList.add("净利润");
jsxmList.add("股权价值");
lastThreeYearList.add(fcfe.getYysr2020());
lastThreeYearList.add(fcfe.getJfz2020());
lastThreeYearList.add(fcfe.getGdqy2020());
lastThreeYearList.add(fcfe.getJlr2020());
lastThreeYearList.add(fcfe.getGqjz2020());
ycxm.add("销售增长率");
ycxm.add("营业收入");
ycxm.add("净负债");
ycxm.add("股东权益");
ycxm.add("净利润");
ycxm.add("股权资本成本Re");
ycxm.add("股权现金流");
ycxm.add("股权价值");
lastTwoYear.add(fcfe.getXszzl2021());
lastTwoYear.add(fcfe.getYysr2021());
lastTwoYear.add(fcfe.getJfz2021());
lastTwoYear.add(fcfe.getGdqy2021());
lastTwoYear.add(fcfe.getJlr2021());
lastTwoYear.add(fcfe.getGqzbcbre2021());
lastTwoYear.add(fcfe.getGqxjl2021());
lastTwoYear.add(fcfe.getGqjz2021());
lastYear.add(fcfe.getXszzl2022());
lastYear.add(fcfe.getYysr2022());
lastYear.add(fcfe.getJfz2022());
lastYear.add(fcfe.getGdqy2022());
lastYear.add(fcfe.getJlr2022());
lastYear.add(fcfe.getGqzbcbre2022());
lastYear.add(fcfe.getGqxjl2022());
lastYear.add(fcfe.getGqjz2022());
thisYear.add(fcfe.getXszzl2023());
thisYear.add(fcfe.getYysr2023());
thisYear.add(fcfe.getJfz2023());
thisYear.add(fcfe.getGdqy2023());
thisYear.add(fcfe.getJlr2023());
thisYear.add(fcfe.getGqzbcbre2023());
thisYear.add(fcfe.getGqxjl2023());
thisYear.add(fcfe.getGqjz2023());
for (int i = 0; i < 5; i++) {
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(jsxmList.get(i), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastThreeYearList.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(ycxm.get(i), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastTwoYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(thisYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
}
for (int i = 5; i < 8; i++) {
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph("", 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph("", 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(ycxm.get(i), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastTwoYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(thisYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
}
document.add(table);
document.close();
}
@GetMapping("exportDDMPDF")
@ApiOperation("绝对估值法DDM-PDF导出")
@AnonymousAccess
public void exportDDMPDF(@ApiParam("HttpServletResponse") HttpServletResponse response,
@ApiParam("flow_id") @RequestParam String flowId) throws IOException, DocumentException {
Document document = new Document();
// 创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(("绝对估值报告" + "." + "pdf"), CharsetUtil.UTF_8));
PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream());
writer.setPageEvent(new HeaderAndFooterEvent());
document.open();
HeaderAndFooterEvent.tpl = writer.getDirectContent().createTemplate(500, 500);
HeaderAndFooterEvent.PAGE_NUMBER = true;//实现页眉跟页脚
HeaderAndFooterEvent.HeaderLeft = "";//左上角
HeaderAndFooterEvent.HeaderRight = "";//右上角
HeaderAndFooterEvent.FooterLeft = "";//左下角
HeaderAndFooterEvent.FooterRight = "深圳市天择教育科技有限公司";//右下角
HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "宋体", 25, Font.BOLD);
//添加一个空段落来占位五个参数分别为内容对齐方式1为居中0为居左2为居右段后空行数段前空行数行间距
document.add(HeaderAndFooterEvent.AddParagraph(" ", 1, 200, 0, 1.5f));
document.add(HeaderAndFooterEvent.AddParagraph("天择投资银行业务教学系统", 1, 1.5f));
HeaderAndFooterEvent.SetFont(BaseColor.GRAY, "宋体", 18, Font.BOLD);
document.add(HeaderAndFooterEvent.AddParagraph("绝对估值分析报告-股利贴现DDM", 1, 1.5f));
document.newPage(); //换第二页 目录
PdfPTable table = new PdfPTable(4);
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell1= new PdfPCell(HeaderAndFooterEvent.AddParagraph("预测值", 0, 1.5f));
cell1.setColspan(4); // 设置单元格跨两行
table.addCell(cell1);
ArrayList<String> headList = new ArrayList<>();
headList.add("预测项目");
headList.add("2021-12-31");
headList.add("2022-12-31");
headList.add("2023-12-31");
for (int i = 0; i < headList.size(); i++) {
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(headList.get(i), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
}
EduDDM ddm = eduDDMService.selectDDMByFlowId(flowId);
List<String> ycxm=new ArrayList<>();
List<BigDecimal> lastYear=new ArrayList<>();
List<BigDecimal> lastTwoYear=new ArrayList<>();
List<BigDecimal> thisYear=new ArrayList<>();
ycxm.add("期望股利(每股)");
ycxm.add("股东必要报酬率");
ycxm.add("股利年增长率");
ycxm.add("公司发行股票的内在价值");
lastTwoYear.add(ddm.getQwgl2021());
lastTwoYear.add(ddm.getGdbybcl2021());
lastTwoYear.add(ddm.getGlnzzl2021());
lastTwoYear.add(ddm.getGsfxgpdnzjz2021());
lastYear.add(ddm.getQwgl2022());
lastYear.add(ddm.getGdbybcl2022());
lastYear.add(ddm.getGlnzzl2022());
lastYear.add(ddm.getGsfxgpdnzjz2022());
thisYear.add(ddm.getQwgl2023());
thisYear.add(ddm.getGdbybcl2023());
thisYear.add(ddm.getGlnzzl2023());
thisYear.add(ddm.getGsfxgpdnzjz2023());
for (int i = 0; i < 4; i++) {
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "黑体", 12, Font.BOLD);
PdfPCell cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(ycxm.get(i), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastTwoYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(lastYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
cell_data = new PdfPCell(HeaderAndFooterEvent.AddParagraph(String.valueOf(thisYear.get(i)), 0, 1.5f));
cell_data.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //垂直居中
cell_data.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);//水平居中
table.addCell(cell_data);
}
document.add(table);
document.close();
}
}

@ -0,0 +1,39 @@
package com.sztzjy.fund_investment.entity;
import io.swagger.annotations.ApiModelProperty;
/**
*
* @author xcj
* ip_log
*/
public class IpLog {
private String id;
private String loginIp;
private String ipHomePlace;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getLoginIp() {
return loginIp;
}
public void setLoginIp(String loginIp) {
this.loginIp = loginIp == null ? null : loginIp.trim();
}
public String getIpHomePlace() {
return ipHomePlace;
}
public void setIpHomePlace(String ipHomePlace) {
this.ipHomePlace = ipHomePlace == null ? null : ipHomePlace.trim();
}
}

@ -0,0 +1,409 @@
package com.sztzjy.fund_investment.entity;
import java.util.ArrayList;
import java.util.List;
public class IpLogExample {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
public IpLogExample() {
oredCriteria = new ArrayList<>();
}
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
public String getOrderByClause() {
return orderByClause;
}
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
public boolean isDistinct() {
return distinct;
}
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria andIdIsNull() {
addCriterion("id is null");
return (Criteria) this;
}
public Criteria andIdIsNotNull() {
addCriterion("id is not null");
return (Criteria) this;
}
public Criteria andIdEqualTo(String value) {
addCriterion("id =", value, "id");
return (Criteria) this;
}
public Criteria andIdNotEqualTo(String value) {
addCriterion("id <>", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThan(String value) {
addCriterion("id >", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThanOrEqualTo(String value) {
addCriterion("id >=", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThan(String value) {
addCriterion("id <", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThanOrEqualTo(String value) {
addCriterion("id <=", value, "id");
return (Criteria) this;
}
public Criteria andIdLike(String value) {
addCriterion("id like", value, "id");
return (Criteria) this;
}
public Criteria andIdNotLike(String value) {
addCriterion("id not like", value, "id");
return (Criteria) this;
}
public Criteria andIdIn(List<String> values) {
addCriterion("id in", values, "id");
return (Criteria) this;
}
public Criteria andIdNotIn(List<String> values) {
addCriterion("id not in", values, "id");
return (Criteria) this;
}
public Criteria andIdBetween(String value1, String value2) {
addCriterion("id between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andIdNotBetween(String value1, String value2) {
addCriterion("id not between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andLoginIpIsNull() {
addCriterion("login_ip is null");
return (Criteria) this;
}
public Criteria andLoginIpIsNotNull() {
addCriterion("login_ip is not null");
return (Criteria) this;
}
public Criteria andLoginIpEqualTo(String value) {
addCriterion("login_ip =", value, "loginIp");
return (Criteria) this;
}
public Criteria andLoginIpNotEqualTo(String value) {
addCriterion("login_ip <>", value, "loginIp");
return (Criteria) this;
}
public Criteria andLoginIpGreaterThan(String value) {
addCriterion("login_ip >", value, "loginIp");
return (Criteria) this;
}
public Criteria andLoginIpGreaterThanOrEqualTo(String value) {
addCriterion("login_ip >=", value, "loginIp");
return (Criteria) this;
}
public Criteria andLoginIpLessThan(String value) {
addCriterion("login_ip <", value, "loginIp");
return (Criteria) this;
}
public Criteria andLoginIpLessThanOrEqualTo(String value) {
addCriterion("login_ip <=", value, "loginIp");
return (Criteria) this;
}
public Criteria andLoginIpLike(String value) {
addCriterion("login_ip like", value, "loginIp");
return (Criteria) this;
}
public Criteria andLoginIpNotLike(String value) {
addCriterion("login_ip not like", value, "loginIp");
return (Criteria) this;
}
public Criteria andLoginIpIn(List<String> values) {
addCriterion("login_ip in", values, "loginIp");
return (Criteria) this;
}
public Criteria andLoginIpNotIn(List<String> values) {
addCriterion("login_ip not in", values, "loginIp");
return (Criteria) this;
}
public Criteria andLoginIpBetween(String value1, String value2) {
addCriterion("login_ip between", value1, value2, "loginIp");
return (Criteria) this;
}
public Criteria andLoginIpNotBetween(String value1, String value2) {
addCriterion("login_ip not between", value1, value2, "loginIp");
return (Criteria) this;
}
public Criteria andIpHomePlaceIsNull() {
addCriterion("ip_home_place is null");
return (Criteria) this;
}
public Criteria andIpHomePlaceIsNotNull() {
addCriterion("ip_home_place is not null");
return (Criteria) this;
}
public Criteria andIpHomePlaceEqualTo(String value) {
addCriterion("ip_home_place =", value, "ipHomePlace");
return (Criteria) this;
}
public Criteria andIpHomePlaceNotEqualTo(String value) {
addCriterion("ip_home_place <>", value, "ipHomePlace");
return (Criteria) this;
}
public Criteria andIpHomePlaceGreaterThan(String value) {
addCriterion("ip_home_place >", value, "ipHomePlace");
return (Criteria) this;
}
public Criteria andIpHomePlaceGreaterThanOrEqualTo(String value) {
addCriterion("ip_home_place >=", value, "ipHomePlace");
return (Criteria) this;
}
public Criteria andIpHomePlaceLessThan(String value) {
addCriterion("ip_home_place <", value, "ipHomePlace");
return (Criteria) this;
}
public Criteria andIpHomePlaceLessThanOrEqualTo(String value) {
addCriterion("ip_home_place <=", value, "ipHomePlace");
return (Criteria) this;
}
public Criteria andIpHomePlaceLike(String value) {
addCriterion("ip_home_place like", value, "ipHomePlace");
return (Criteria) this;
}
public Criteria andIpHomePlaceNotLike(String value) {
addCriterion("ip_home_place not like", value, "ipHomePlace");
return (Criteria) this;
}
public Criteria andIpHomePlaceIn(List<String> values) {
addCriterion("ip_home_place in", values, "ipHomePlace");
return (Criteria) this;
}
public Criteria andIpHomePlaceNotIn(List<String> values) {
addCriterion("ip_home_place not in", values, "ipHomePlace");
return (Criteria) this;
}
public Criteria andIpHomePlaceBetween(String value1, String value2) {
addCriterion("ip_home_place between", value1, value2, "ipHomePlace");
return (Criteria) this;
}
public Criteria andIpHomePlaceNotBetween(String value1, String value2) {
addCriterion("ip_home_place not between", value1, value2, "ipHomePlace");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

@ -0,0 +1,174 @@
package com.sztzjy.fund_investment.entity;
import io.swagger.annotations.ApiModelProperty;
/**
*
* @author xcj
* sys_log_test
*/
public class SysLogTest {
@ApiModelProperty("系统日志表")
private String id;
@ApiModelProperty("学号")
private String studentNo;
@ApiModelProperty("姓名")
private String studnetName;
@ApiModelProperty("学校")
private String schoolName;
@ApiModelProperty("专业名称")
private String major;
@ApiModelProperty("班级")
private String className;
@ApiModelProperty("开课年度")
private String startYearTime;
@ApiModelProperty("登录次数")
private String loginCount;
@ApiModelProperty("实验成绩")
private String score;
@ApiModelProperty("开始时间年")
private String startTimeYear;
@ApiModelProperty("开始时间月")
private String startTimeMonth;
@ApiModelProperty("开始时间日")
private String startTimeDay;
@ApiModelProperty("结束时间年")
private String endTimeYear;
@ApiModelProperty("结束时间月")
private String endTimeMonth;
@ApiModelProperty("结束时间日")
private String endTimeDay;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getStudentNo() {
return studentNo;
}
public void setStudentNo(String studentNo) {
this.studentNo = studentNo == null ? null : studentNo.trim();
}
public String getStudnetName() {
return studnetName;
}
public void setStudnetName(String studnetName) {
this.studnetName = studnetName == null ? null : studnetName.trim();
}
public String getSchoolName() {
return schoolName;
}
public void setSchoolName(String schoolName) {
this.schoolName = schoolName == null ? null : schoolName.trim();
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major == null ? null : major.trim();
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className == null ? null : className.trim();
}
public String getStartYearTime() {
return startYearTime;
}
public void setStartYearTime(String startYearTime) {
this.startYearTime = startYearTime == null ? null : startYearTime.trim();
}
public String getLoginCount() {
return loginCount;
}
public void setLoginCount(String loginCount) {
this.loginCount = loginCount == null ? null : loginCount.trim();
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score == null ? null : score.trim();
}
public String getStartTimeYear() {
return startTimeYear;
}
public void setStartTimeYear(String startTimeYear) {
this.startTimeYear = startTimeYear == null ? null : startTimeYear.trim();
}
public String getStartTimeMonth() {
return startTimeMonth;
}
public void setStartTimeMonth(String startTimeMonth) {
this.startTimeMonth = startTimeMonth == null ? null : startTimeMonth.trim();
}
public String getStartTimeDay() {
return startTimeDay;
}
public void setStartTimeDay(String startTimeDay) {
this.startTimeDay = startTimeDay == null ? null : startTimeDay.trim();
}
public String getEndTimeYear() {
return endTimeYear;
}
public void setEndTimeYear(String endTimeYear) {
this.endTimeYear = endTimeYear == null ? null : endTimeYear.trim();
}
public String getEndTimeMonth() {
return endTimeMonth;
}
public void setEndTimeMonth(String endTimeMonth) {
this.endTimeMonth = endTimeMonth == null ? null : endTimeMonth.trim();
}
public String getEndTimeDay() {
return endTimeDay;
}
public void setEndTimeDay(String endTimeDay) {
this.endTimeDay = endTimeDay == null ? null : endTimeDay.trim();
}
}

@ -0,0 +1,154 @@
package com.sztzjy.fund_investment.entity;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
/**
*
* @author xcj
* sys_login_log
*/
public class SysLoginLog {
@ApiModelProperty("系统日志表ID")
private String id;
@ApiModelProperty("学号")
private String studentNo;
@ApiModelProperty("姓名")
private String studnetName;
@ApiModelProperty("学校")
private String schoolName;
@ApiModelProperty("所属省份")
private String province;
@ApiModelProperty("实验名称")
private String experimentName;
@ApiModelProperty("登录时间")
private Date loginTime;
@ApiModelProperty("登出时间")
private Date outTime;
@ApiModelProperty("实验时长")
private String experimentTime;
@ApiModelProperty("是否在线")
private String isOnline;
@ApiModelProperty("登录IP")
private String loginIp;
@ApiModelProperty("实验成绩")
private String experimentSocre;
@ApiModelProperty("ip归属地")
private String ipHomePlace;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getStudentNo() {
return studentNo;
}
public void setStudentNo(String studentNo) {
this.studentNo = studentNo == null ? null : studentNo.trim();
}
public String getStudnetName() {
return studnetName;
}
public void setStudnetName(String studnetName) {
this.studnetName = studnetName == null ? null : studnetName.trim();
}
public String getSchoolName() {
return schoolName;
}
public void setSchoolName(String schoolName) {
this.schoolName = schoolName == null ? null : schoolName.trim();
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province == null ? null : province.trim();
}
public String getExperimentName() {
return experimentName;
}
public void setExperimentName(String experimentName) {
this.experimentName = experimentName == null ? null : experimentName.trim();
}
public Date getLoginTime() {
return loginTime;
}
public void setLoginTime(Date loginTime) {
this.loginTime = loginTime;
}
public Date getOutTime() {
return outTime;
}
public void setOutTime(Date outTime) {
this.outTime = outTime;
}
public String getExperimentTime() {
return experimentTime;
}
public void setExperimentTime(String experimentTime) {
this.experimentTime = experimentTime == null ? null : experimentTime.trim();
}
public String getIsOnline() {
return isOnline;
}
public void setIsOnline(String isOnline) {
this.isOnline = isOnline == null ? null : isOnline.trim();
}
public String getLoginIp() {
return loginIp;
}
public void setLoginIp(String loginIp) {
this.loginIp = loginIp == null ? null : loginIp.trim();
}
public String getExperimentSocre() {
return experimentSocre;
}
public void setExperimentSocre(String experimentSocre) {
this.experimentSocre = experimentSocre == null ? null : experimentSocre.trim();
}
public String getIpHomePlace() {
return ipHomePlace;
}
public void setIpHomePlace(String ipHomePlace) {
this.ipHomePlace = ipHomePlace == null ? null : ipHomePlace.trim();
}
}

@ -0,0 +1,7 @@
package com.sztzjy.fund_investment.service;
import java.util.Map;
public interface IIlabService {
Map<String, String> getAccessToken(String ticket);
}

@ -0,0 +1,65 @@
package com.sztzjy.fund_investment.service.serviceImpl;
import com.alibaba.fastjson.JSONObject;
import com.sztzjy.fund_investment.service.IIlabService;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
@Service
public class IlabServiceImpl implements IIlabService {
String appid = "107223";
String secret = "5F2pfvRDXq5ybF4imPA02TJZfaYA1hPXTTvPjtwk+OE=";
@Override
public Map<String, String> getAccessToken(String ticket) {
Map<String, String> returnMap=new HashMap<>();
try {
String ticketEncode = URLEncoder.encode(ticket, "UTF-8");
String signature = ticket + appid + secret;
String signatureMD5 = DigestUtils.md5DigestAsHex(signature.getBytes("UTF-8")).toUpperCase();
String url = "https://www.ilab-x.com/open/api/v2/token" +
"?ticket=" + ticketEncode +
"&appid=" + appid +
"&signature=" + signatureMD5;
URL apiUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) apiUrl.openConnection();
// 设置请求类型为GET
connection.setRequestMethod("GET");
// 获取响应
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuffer response = new StringBuffer();
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
// 打印响应内容
com.alibaba.fastjson.JSONObject jsonObject = JSONObject.parseObject(response.toString());
System.out.println(jsonObject.getString("access_token"));
System.out.println(jsonObject.getString("un"));
System.out.println(jsonObject.getString("dis"));
System.out.println(jsonObject.getInteger("code"));
returnMap.put("access_token",jsonObject.getString("access_token"));
returnMap.put("un",jsonObject.getString("un"));
returnMap.put("dis",jsonObject.getString("dis"));
returnMap.put("code",jsonObject.getString("code"));
// 关闭连接
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return returnMap;
}
}
Loading…
Cancel
Save