|
|
|
@ -9,12 +9,10 @@ import cn.hutool.core.util.IdUtil;
|
|
|
|
|
import com.sztzjy.fund_investment.entity.*;
|
|
|
|
|
import com.sztzjy.fund_investment.entity.dto.InvestmentAgreementDto;
|
|
|
|
|
import com.sztzjy.fund_investment.entity.dto.ReportUploadDto;
|
|
|
|
|
import com.sztzjy.fund_investment.mapper.FoundProjectMapper;
|
|
|
|
|
import com.sztzjy.fund_investment.mapper.ProfitManagementMapper;
|
|
|
|
|
import com.sztzjy.fund_investment.mapper.ProjectPoolMapper;
|
|
|
|
|
import com.sztzjy.fund_investment.mapper.TrainingReportMapper;
|
|
|
|
|
import com.sztzjy.fund_investment.mapper.*;
|
|
|
|
|
import com.sztzjy.fund_investment.service.ContractInvestmentService;
|
|
|
|
|
import com.sztzjy.fund_investment.service.ISysProjectDueDiligenceService;
|
|
|
|
|
import com.sztzjy.fund_investment.service.PerformanceScoreService;
|
|
|
|
|
import com.sztzjy.fund_investment.util.DateToUpperChinese;
|
|
|
|
|
import com.sztzjy.fund_investment.util.ResultEntity;
|
|
|
|
|
import com.sztzjy.fund_investment.util.file.IFileUtil;
|
|
|
|
@ -24,7 +22,9 @@ import org.springframework.http.HttpStatus;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Field;
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
import java.util.Calendar;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
@ -51,6 +51,22 @@ public class ContractInvestmentServiceImpl implements ContractInvestmentService
|
|
|
|
|
@Autowired
|
|
|
|
|
private ProfitManagementMapper profitManagementMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IssuanceInfoMapper issuanceInfoMapper;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private InquiryParticipationMapper inquiryParticipationMapper;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IssuanceParameterInputMapper issuanceParameterInputMapper;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private PerformanceScoreMapper performanceScoreMapper;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private PerformanceScoreService performanceScoreService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 上传尽调报告
|
|
|
|
|
*/
|
|
|
|
@ -80,6 +96,17 @@ public class ContractInvestmentServiceImpl implements ContractInvestmentService
|
|
|
|
|
trainingReport.setUploadtime(new Date());
|
|
|
|
|
trainingReport.setStep(reportNameType.getReportNameType());
|
|
|
|
|
trainingReportMapper.insert(trainingReport);
|
|
|
|
|
//(每个2分,共4分)
|
|
|
|
|
if ("尽调报告".equals(reportNameType.getReportNameType())){
|
|
|
|
|
//investmentSigningDiligenceReportScore
|
|
|
|
|
|
|
|
|
|
performanceScoreService.calculateScoreByModule("investmentSigningDiligenceReportScore", 2, reportNameType.getFlowId());
|
|
|
|
|
|
|
|
|
|
}else if ("估值报告".equals(reportNameType.getReportNameType())){
|
|
|
|
|
//investmentSigningVlauationReportScore
|
|
|
|
|
performanceScoreService.calculateScoreByModule("investmentSigningVlauationReportScore", 2, reportNameType.getFlowId());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return new ResultEntity<>(HttpStatus.OK, "报告上传成功!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -234,7 +261,332 @@ public class ContractInvestmentServiceImpl implements ContractInvestmentService
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<TrainingReport> getTrainingReports (String flowId, String reportName){
|
|
|
|
|
/**
|
|
|
|
|
* 承销商新建发行申请
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public ResultEntity<String> newIssuanceApplication(IssuanceInfo issuanceInfo) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//发行总量和公司名称做校验
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IssuanceInfoExample issuanceInfoExample = new IssuanceInfoExample();
|
|
|
|
|
issuanceInfoExample.createCriteria().andFlowIdEqualTo(issuanceInfo.getFlowId());
|
|
|
|
|
List<IssuanceInfo> issuanceInfos = issuanceInfoMapper.selectByExample(issuanceInfoExample);
|
|
|
|
|
//查询有无第一次录入的数据
|
|
|
|
|
if (issuanceInfos.size()>0)
|
|
|
|
|
{
|
|
|
|
|
//获取上一次录入的数据和这一次录入的做对比
|
|
|
|
|
String s = compareFields(issuanceInfo,issuanceInfos.get(0));
|
|
|
|
|
if (!s.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
issuanceInfoMapper.deleteByExample(issuanceInfoExample);
|
|
|
|
|
return new ResultEntity<>(HttpStatus.OK,s,"两次输入的"+s+":"+"值不同!");
|
|
|
|
|
}
|
|
|
|
|
//完成新建发行申请3分
|
|
|
|
|
performanceScoreService.calculateScoreByModule("newPricingIssuanceScore", 3, issuanceInfo.getFlowId());
|
|
|
|
|
return new ResultEntity<>(HttpStatus.OK,s,"添加成功");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
//第一次录入和估值做计算
|
|
|
|
|
else {
|
|
|
|
|
//查询立项公司估值
|
|
|
|
|
FoundProjectExample foundProjectExample = new FoundProjectExample();
|
|
|
|
|
foundProjectExample.createCriteria().andFlowIdEqualTo(issuanceInfo.getFlowId());
|
|
|
|
|
List<FoundProject> foundProjects = foundProjectMapper.selectByExample(foundProjectExample);
|
|
|
|
|
if (foundProjects.size() > 0) {
|
|
|
|
|
//立项项目ID
|
|
|
|
|
String projectPoolId = foundProjects.get(0).getProjectPoolId();
|
|
|
|
|
|
|
|
|
|
ProjectPoolExample projectPoolExample = new ProjectPoolExample();
|
|
|
|
|
projectPoolExample.createCriteria().andProjectPoolIdEqualTo(projectPoolId);
|
|
|
|
|
List<ProjectPool> projectPools = projectPoolMapper.selectByExample(projectPoolExample);
|
|
|
|
|
if (projectPools.size() > 0) {
|
|
|
|
|
//项目估值
|
|
|
|
|
String latestValuation = projectPools.get(0).getLatestValuation();
|
|
|
|
|
Long aLong = Convert.toLong(latestValuation);
|
|
|
|
|
long max = 4000000000L;
|
|
|
|
|
|
|
|
|
|
BigDecimal totalIssuanceVolume = issuanceInfo.getTotalIssuanceVolume();
|
|
|
|
|
//学生输入的发行总量
|
|
|
|
|
long l = totalIssuanceVolume.longValue();
|
|
|
|
|
long info = l * 100000;
|
|
|
|
|
//判断估值和4亿比较
|
|
|
|
|
//估值小于4亿的,发行总量大于等于估值的25%,估值大于4亿的,发行总量大于估值的10%
|
|
|
|
|
if(aLong > max){
|
|
|
|
|
|
|
|
|
|
if (info/aLong >0.1) {
|
|
|
|
|
issuanceInfo.setId(IdUtil.fastSimpleUUID());
|
|
|
|
|
//插入数据
|
|
|
|
|
issuanceInfoMapper.insert(issuanceInfo);
|
|
|
|
|
return new ResultEntity(HttpStatus.OK);
|
|
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
return new ResultEntity(HttpStatus.BAD_REQUEST, "发行总量小于估值的10%");
|
|
|
|
|
}
|
|
|
|
|
}else if (aLong < max){
|
|
|
|
|
if (info/aLong >0.25) {
|
|
|
|
|
issuanceInfo.setId(IdUtil.fastSimpleUUID());
|
|
|
|
|
//插入数据
|
|
|
|
|
issuanceInfoMapper.insert(issuanceInfo);
|
|
|
|
|
return new ResultEntity(HttpStatus.OK);
|
|
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
return new ResultEntity(HttpStatus.BAD_REQUEST, "发行总量小于估值的25%");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//取出发行总量
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*发行参数录入基本信息
|
|
|
|
|
* @param flowId
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public IssuanceParameterInput releaseParametersInfo(String flowId) {
|
|
|
|
|
|
|
|
|
|
IssuanceInfoExample issuanceInfoExample = new IssuanceInfoExample();
|
|
|
|
|
issuanceInfoExample.createCriteria().andFlowIdEqualTo(flowId);
|
|
|
|
|
List<IssuanceInfo> issuanceInfos = issuanceInfoMapper.selectByExample(issuanceInfoExample);
|
|
|
|
|
if (issuanceInfos.size() > 0) {
|
|
|
|
|
IssuanceInfo issuanceInfo = issuanceInfos.get(0);
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
IssuanceParameterInput issuanceParameterInput = new IssuanceParameterInput();
|
|
|
|
|
//公司名称
|
|
|
|
|
issuanceParameterInput.setCompanyName(issuanceInfo.getCompanyName());
|
|
|
|
|
//证券代码
|
|
|
|
|
issuanceParameterInput.setSecurityCode(issuanceInfo.getSecurityCode());
|
|
|
|
|
//证券简称
|
|
|
|
|
issuanceParameterInput.setSecurityAbbreviation(issuanceInfo.getSecurityAbbreviation());
|
|
|
|
|
//发行总量
|
|
|
|
|
issuanceParameterInput.setTotalIssuanceVolume(issuanceInfo.getTotalIssuanceVolume());
|
|
|
|
|
//网下发行总量
|
|
|
|
|
issuanceParameterInput.setOfflineIssuanceQuantity(issuanceInfo.getOfflineIssuanceQuantity());
|
|
|
|
|
|
|
|
|
|
InquiryParticipationExample inquiryParticipationExample = new InquiryParticipationExample();
|
|
|
|
|
inquiryParticipationExample.createCriteria().andFlowIdEqualTo(flowId);
|
|
|
|
|
inquiryParticipationExample.setOrderByClause("submission_time desc");
|
|
|
|
|
|
|
|
|
|
List<InquiryParticipation> inquiryParticipations = inquiryParticipationMapper.selectByExample(inquiryParticipationExample);
|
|
|
|
|
|
|
|
|
|
if (inquiryParticipations.size() > 0) {
|
|
|
|
|
//最新添加的报价
|
|
|
|
|
InquiryParticipation inquiryParticipation = inquiryParticipations.get(0);
|
|
|
|
|
//发行价格
|
|
|
|
|
issuanceParameterInput.setIssuancePrice(inquiryParticipation.getDeclarationPrice());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return issuanceParameterInput;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 发行参数录入
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ResultEntity<String> updateReleaseParametersInfo(IssuanceParameterInput issuanceParameterInput) {
|
|
|
|
|
IssuanceParameterInputExample issuanceParameterInputExample = new IssuanceParameterInputExample();
|
|
|
|
|
issuanceParameterInputExample.createCriteria().andFlowIdEqualTo(issuanceParameterInput.getFlowId());
|
|
|
|
|
List<IssuanceParameterInput> issuanceParameterInputList = issuanceParameterInputMapper.selectByExample(issuanceParameterInputExample);
|
|
|
|
|
//查询有无第一次录入的数据
|
|
|
|
|
if (issuanceParameterInputList.size()>0)
|
|
|
|
|
{
|
|
|
|
|
//获取上一次录入的数据和这一次录入的做对比
|
|
|
|
|
String s = compareFieldsTwo(issuanceParameterInput,issuanceParameterInputList.get(0));
|
|
|
|
|
if (!s.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
issuanceParameterInputMapper.deleteByExample(issuanceParameterInputExample);
|
|
|
|
|
return new ResultEntity<>(HttpStatus.OK,s,"两次输入的"+s+":"+"值不同!");
|
|
|
|
|
}
|
|
|
|
|
//询价结果查询及发行参数录入2分
|
|
|
|
|
performanceScoreService.calculateScoreByModule("pricingIssuanceEnteringScore", 2, issuanceParameterInput.getFlowId());
|
|
|
|
|
|
|
|
|
|
return new ResultEntity<>(HttpStatus.OK,s,"添加成功");
|
|
|
|
|
}
|
|
|
|
|
//第一次录入和估值做计算
|
|
|
|
|
else {
|
|
|
|
|
issuanceParameterInput.setId(IdUtil.fastSimpleUUID());
|
|
|
|
|
|
|
|
|
|
issuanceParameterInputMapper.insertSelective(issuanceParameterInput);
|
|
|
|
|
return new ResultEntity<>(HttpStatus.OK);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 网下初步配售发行价格发行总量
|
|
|
|
|
* @param flowId
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public preliminaryOfflineDto preliminaryOffline(String flowId) {
|
|
|
|
|
IssuanceParameterInputExample issuanceParameterInputExample = new IssuanceParameterInputExample();
|
|
|
|
|
issuanceParameterInputExample.createCriteria().andFlowIdEqualTo(flowId);
|
|
|
|
|
IssuanceParameterInput issuanceParameterInput = issuanceParameterInputMapper.selectByExample(issuanceParameterInputExample).get(0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
preliminaryOfflineDto build = preliminaryOfflineDto.builder().IssuePrice(issuanceParameterInput.getIssuancePrice().toString()).
|
|
|
|
|
IssueNumber(issuanceParameterInput.getOfflineIssuanceQuantity().toString())
|
|
|
|
|
.TotalRemaining(issuanceParameterInput.getOfflineIssuanceQuantity().toString()).build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return build;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 比较两个Student对象的字段,返回不相同的字段
|
|
|
|
|
public String compareFieldsTwo(IssuanceParameterInput newInfo ,IssuanceParameterInput other) {
|
|
|
|
|
IssuanceParameterInputExample issuanceParameterInputExample = new IssuanceParameterInputExample();
|
|
|
|
|
issuanceParameterInputExample.createCriteria().andFlowIdEqualTo(newInfo.getFlowId());
|
|
|
|
|
List<IssuanceParameterInput> issuanceParameterInputList = issuanceParameterInputMapper.selectByExample(issuanceParameterInputExample);
|
|
|
|
|
//查询有无第一次录入的数据
|
|
|
|
|
String id = issuanceParameterInputList.get(0).getId();
|
|
|
|
|
newInfo.setId(id);
|
|
|
|
|
//查询有无第一次录入的数据
|
|
|
|
|
|
|
|
|
|
StringBuilder differences = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
// 获取Student类的所有字段
|
|
|
|
|
Field[] fields = newInfo.getClass().getDeclaredFields();
|
|
|
|
|
for (Field field : fields) {
|
|
|
|
|
// 设置字段可访问,因为可能是私有的
|
|
|
|
|
field.setAccessible(true);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// 获取当前对象和另一个对象的字段值
|
|
|
|
|
Object thisValue = field.get(newInfo);
|
|
|
|
|
Object otherValue = field.get(other);
|
|
|
|
|
|
|
|
|
|
// // 比较字段值,如果不相同,记录下来
|
|
|
|
|
// if ((thisValue == null && otherValue != null) || (thisValue != null && !thisValue.equals(otherValue))) {
|
|
|
|
|
// differences.append(field.getName()).append(": ").append(thisValue).append(" -> ").append(otherValue).append("\n");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// 检查是否为浮点数,并比较数值
|
|
|
|
|
if (thisValue instanceof BigDecimal && otherValue instanceof BigDecimal) {
|
|
|
|
|
BigDecimal epsilon = new BigDecimal("0.01"); // 设置误差范围
|
|
|
|
|
|
|
|
|
|
// 使用 compareTo 方法进行比较
|
|
|
|
|
if (((BigDecimal) thisValue).subtract((BigDecimal) otherValue).abs().compareTo(epsilon) > 0) {
|
|
|
|
|
differences.append(field.getName()).append(": ").append(thisValue).append(" -> ").append(otherValue).append("/n");
|
|
|
|
|
}
|
|
|
|
|
} else if (thisValue instanceof Date && otherValue instanceof Date) {
|
|
|
|
|
// 对于日期字段,格式化日期为 "yyyy-MM-dd"
|
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
String formattedThisValue = dateFormat.format((Date) thisValue);
|
|
|
|
|
String formattedOtherValue = dateFormat.format((Date) otherValue);
|
|
|
|
|
|
|
|
|
|
// 比较格式化后的日期
|
|
|
|
|
if (!formattedThisValue.equals(formattedOtherValue)) {
|
|
|
|
|
differences.append(field.getName()).append(": ").append(formattedThisValue).append(" -> ").append(formattedOtherValue).append("/n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// 对于非浮点数,直接使用 equals 进行比较
|
|
|
|
|
if ((thisValue == null && otherValue != null) || (thisValue != null && !thisValue.equals(otherValue))) {
|
|
|
|
|
differences.append(field.getName()).append(": ").append(thisValue).append(" -> ").append(otherValue).append("/n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (IllegalAccessException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return differences.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 比较两个Student对象的字段,返回不相同的字段
|
|
|
|
|
public String compareFields(IssuanceInfo newInfo ,IssuanceInfo other) {
|
|
|
|
|
IssuanceInfoExample issuanceInfoExample = new IssuanceInfoExample();
|
|
|
|
|
issuanceInfoExample.createCriteria().andFlowIdEqualTo(other.getFlowId());
|
|
|
|
|
List<IssuanceInfo> issuanceInfos = issuanceInfoMapper.selectByExample(issuanceInfoExample);
|
|
|
|
|
String id = issuanceInfos.get(0).getId();
|
|
|
|
|
newInfo.setId(id);
|
|
|
|
|
//查询有无第一次录入的数据
|
|
|
|
|
|
|
|
|
|
StringBuilder differences = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
// 获取Student类的所有字段
|
|
|
|
|
Field[] fields = newInfo.getClass().getDeclaredFields();
|
|
|
|
|
for (Field field : fields) {
|
|
|
|
|
// 设置字段可访问,因为可能是私有的
|
|
|
|
|
field.setAccessible(true);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// 获取当前对象和另一个对象的字段值
|
|
|
|
|
Object thisValue = field.get(newInfo);
|
|
|
|
|
Object otherValue = field.get(other);
|
|
|
|
|
|
|
|
|
|
// // 比较字段值,如果不相同,记录下来
|
|
|
|
|
// if ((thisValue == null && otherValue != null) || (thisValue != null && !thisValue.equals(otherValue))) {
|
|
|
|
|
// differences.append(field.getName()).append(": ").append(thisValue).append(" -> ").append(otherValue).append("\n");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// 检查是否为浮点数,并比较数值
|
|
|
|
|
if (thisValue instanceof BigDecimal && otherValue instanceof BigDecimal) {
|
|
|
|
|
BigDecimal epsilon = new BigDecimal("0.01"); // 设置误差范围
|
|
|
|
|
|
|
|
|
|
// 使用 compareTo 方法进行比较
|
|
|
|
|
if (((BigDecimal) thisValue).subtract((BigDecimal) otherValue).abs().compareTo(epsilon) > 0) {
|
|
|
|
|
differences.append(field.getName()).append(": ").append(thisValue).append(" -> ").append(otherValue).append("/n");
|
|
|
|
|
}
|
|
|
|
|
} else if (thisValue instanceof Date && otherValue instanceof Date) {
|
|
|
|
|
// 对于日期字段,格式化日期为 "yyyy-MM-dd"
|
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
String formattedThisValue = dateFormat.format((Date) thisValue);
|
|
|
|
|
String formattedOtherValue = dateFormat.format((Date) otherValue);
|
|
|
|
|
|
|
|
|
|
// 比较格式化后的日期
|
|
|
|
|
if (!formattedThisValue.equals(formattedOtherValue)) {
|
|
|
|
|
differences.append(field.getName()).append(": ").append(formattedThisValue).append(" -> ").append(formattedOtherValue).append("/n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// 对于非浮点数,直接使用 equals 进行比较
|
|
|
|
|
if ((thisValue == null && otherValue != null) || (thisValue != null && !thisValue.equals(otherValue))) {
|
|
|
|
|
differences.append(field.getName()).append(": ").append(thisValue).append(" -> ").append(otherValue).append("/n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (IllegalAccessException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return differences.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<TrainingReport> getTrainingReports (String flowId, String reportName){
|
|
|
|
|
TrainingReportExample trainingReportExample = new TrainingReportExample();
|
|
|
|
|
trainingReportExample.createCriteria().andFlowIdEqualTo(flowId).andStepEqualTo(reportName);
|
|
|
|
|
return trainingReportMapper.selectByExample(trainingReportExample);
|
|
|
|
|