From 82bc5b7226929755c00eb0a248fc760ba6691354 Mon Sep 17 00:00:00 2001 From: xiaoCJ <406612557@qq.com> Date: Fri, 1 Dec 2023 14:27:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=81=E5=B8=88=E7=AB=AF=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=8F=8A=E4=BF=AE=E6=94=B9=E8=A1=A8=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fund_investment/config/Constant.java | 9 + .../controller/FundraisingController.java | 3 + .../controller/TopicController.java | 86 +++-- .../controller/tea/ClassScoreController.java | 122 ++++++- .../tea/TeaTopicManageController.java | 110 ++++++ .../entity/dto/FoundProjectDto.java | 135 ++++++++ .../entity/dto/PerformanceScoreDto.java | 322 ++++++++++++++++++ .../dto/PerformanceTrainingScoreDto.java | 169 +++++++++ .../entity/dto/QuestionAnswerDto.java | 40 +++ .../fund_investment/entity/dto/UserDto.java | 7 +- .../PerformanceScoreServiceImpl.java | 4 +- .../tea/ClassScoreServiceImpl.java | 260 ++++++++++++-- .../tea/TeaTopicManageServiceImpl.java | 120 +++++++ .../service/tea/ClassScoreService.java | 15 +- .../service/tea/TeaTopicManageService.java | 19 ++ .../resources/mappers/FoundProjectMapper.xml | 43 ++- 16 files changed, 1381 insertions(+), 83 deletions(-) create mode 100644 src/main/java/com/sztzjy/fund_investment/controller/tea/TeaTopicManageController.java create mode 100644 src/main/java/com/sztzjy/fund_investment/entity/dto/FoundProjectDto.java create mode 100644 src/main/java/com/sztzjy/fund_investment/entity/dto/PerformanceScoreDto.java create mode 100644 src/main/java/com/sztzjy/fund_investment/entity/dto/PerformanceTrainingScoreDto.java create mode 100644 src/main/java/com/sztzjy/fund_investment/entity/dto/QuestionAnswerDto.java create mode 100644 src/main/java/com/sztzjy/fund_investment/service/serviceImpl/tea/TeaTopicManageServiceImpl.java create mode 100644 src/main/java/com/sztzjy/fund_investment/service/tea/TeaTopicManageService.java diff --git a/src/main/java/com/sztzjy/fund_investment/config/Constant.java b/src/main/java/com/sztzjy/fund_investment/config/Constant.java index a276917..b668b92 100644 --- a/src/main/java/com/sztzjy/fund_investment/config/Constant.java +++ b/src/main/java/com/sztzjy/fund_investment/config/Constant.java @@ -35,4 +35,13 @@ public class Constant { public static final String NINE = "999"; public static final String TZBG = "投资报告"; + + public static final String FINISHED = "已完成"; + public static final String UNFINISHED = "未完成"; + + public static final String XMGZFX = "项目评估分析"; + public static final String YWJDJL = "业务尽调结论"; + public static final String CWJDJL = "财务尽调结论"; + public static final String XDGZJL = "相对估值结论"; + public static final String JDGZJL = "绝对估值结论"; } diff --git a/src/main/java/com/sztzjy/fund_investment/controller/FundraisingController.java b/src/main/java/com/sztzjy/fund_investment/controller/FundraisingController.java index 81b40fe..0fcac87 100644 --- a/src/main/java/com/sztzjy/fund_investment/controller/FundraisingController.java +++ b/src/main/java/com/sztzjy/fund_investment/controller/FundraisingController.java @@ -1,5 +1,6 @@ package com.sztzjy.fund_investment.controller; +import com.sztzjy.fund_investment.annotation.AnonymousAccess; import com.sztzjy.fund_investment.entity.Fundraising; import com.sztzjy.fund_investment.mapper.FundraisingMapper; import com.sztzjy.fund_investment.service.ISysFundraisingService; @@ -26,6 +27,7 @@ public class FundraisingController { @Autowired FundraisingMapper fundraisingMapper; + @AnonymousAccess @GetMapping("getFundraising") @ApiOperation("资金募资回显") public ResultEntity getFundraising(@ApiParam("流程id") @RequestParam String flowId) { @@ -33,6 +35,7 @@ public class FundraisingController { return new ResultEntity(HttpStatus.OK,"资金募资回显成功",fundraising); } + @AnonymousAccess @GetMapping("insertFundraising") @ApiOperation("新增基金募资") public ResultEntity insertFundraising(@ApiParam("流程id") @RequestParam String flowId, diff --git a/src/main/java/com/sztzjy/fund_investment/controller/TopicController.java b/src/main/java/com/sztzjy/fund_investment/controller/TopicController.java index 710044b..5740bbb 100644 --- a/src/main/java/com/sztzjy/fund_investment/controller/TopicController.java +++ b/src/main/java/com/sztzjy/fund_investment/controller/TopicController.java @@ -4,8 +4,10 @@ import cn.hutool.core.util.IdUtil; import com.sztzjy.fund_investment.annotation.AnonymousAccess; import com.sztzjy.fund_investment.config.Constant; import com.sztzjy.fund_investment.entity.*; +import com.sztzjy.fund_investment.mapper.FlowMapper; import com.sztzjy.fund_investment.mapper.PerformanceScoreMapper; import com.sztzjy.fund_investment.mapper.TopicsMapper; +import com.sztzjy.fund_investment.mapper.UserTableMapper; import com.sztzjy.fund_investment.service.TopicService; import com.sztzjy.fund_investment.util.ResultEntity; import io.swagger.annotations.Api; @@ -33,7 +35,10 @@ public class TopicController { private TopicService topicService; @Autowired private PerformanceScoreMapper performanceScoreMapper; - + @Autowired + private UserTableMapper userTableMapper; + @Autowired + private FlowMapper flowMapper; /* 导入功能 * @author xcj @@ -124,15 +129,15 @@ public class TopicController { @AnonymousAccess @GetMapping("/getVideoScore") @ApiOperation("实务认知计算视频得分接口") - public ResultEntity getVideoScore(@ApiParam("观看视频时间,单位秒") @RequestParam Integer time, - @RequestParam String flowId, - @RequestParam String schoolId) { + public void getVideoScore(@ApiParam("观看视频时间,单位秒") @RequestParam Integer time, + @RequestParam String flowId, + @RequestParam String schoolId) { //系统的第一个流程,新增一个得分对象 PerformanceScore performanceScore = new PerformanceScore(); //观看2分钟以上得满分5分,否则不得分 - BigDecimal score = BigDecimal.ZERO; + BigDecimal score; if (time >= 120) { score = BigDecimal.valueOf(5); performanceScore.setPracticalCognitionScore(score); @@ -142,39 +147,48 @@ public class TopicController { performanceScore.setId(IdUtil.simpleUUID()); performanceScore.setSchoolId(schoolId); performanceScore.setFlowId(flowId); + FlowExample flowExample = new FlowExample(); + flowExample.createCriteria().andFlowIdEqualTo(flowId); + List flows = flowMapper.selectByExample(flowExample); + Flow flow = flows.get(0); + UserTable userTable = userTableMapper.selectByPrimaryKey(flow.getUserid()); + performanceScore.setClassId(userTable.getClassId()); performanceScore.setPracticalCognitionTime(new Date()); -// performanceScore.setFundraisingScore(BigDecimal.ZERO); -// performanceScore.setProjectSearchScore(BigDecimal.ZERO); -// performanceScore.setProjectSearchReportScore(BigDecimal.ZERO); -// performanceScore.setProjectDueDiligenceScore(BigDecimal.ZERO); -// performanceScore.setProjectValuationEstimationRiskScore(BigDecimal.ZERO); -// performanceScore.setProjectDueDiligenceBusinessReportScore(BigDecimal.ZERO); -// performanceScore.setProjectDueDiligenceFinanceReportScore(BigDecimal.ZERO); -// performanceScore.setProjectValuationRelativeScore(BigDecimal.ZERO); -// performanceScore.setProjectValuationScore(BigDecimal.ZERO); -// performanceScore.setProjectValuationAbsoluteScore(BigDecimal.ZERO); -// performanceScore.setProjectUseValuationAbsoluteScore(BigDecimal.ZERO); -// performanceScore.setProjectUseValuationRelativeScore(BigDecimal.ZERO); -// performanceScore.setInvestmentSigningVlauationReportScore(BigDecimal.ZERO); -// performanceScore.setInvestmentSigningDiligenceReportScore(BigDecimal.ZERO); -// performanceScore.setInvestmentSigningInvestScore(BigDecimal.ZERO); -// performanceScore.setInvestmentSigningScore(BigDecimal.ZERO); -// performanceScore.setIpoFlowScore(BigDecimal.ZERO); -// performanceScore.setIpoListedConditionScore(BigDecimal.ZERO); -// performanceScore.setNewPricingIssuanceScore(BigDecimal.ZERO); -// performanceScore.setPricingIssuanceConfirmScore(BigDecimal.ZERO); -// performanceScore.setInitPricingIssuanceScore(BigDecimal.ZERO); -// performanceScore.setPricingIssuanceEnteringScore(BigDecimal.ZERO); -// performanceScore.setProfitManagementMarketValueScore(BigDecimal.ZERO); -// performanceScore.setProfitManagementFundScore(BigDecimal.ZERO); -// performanceScore.setProfitManagementFundExitScore(BigDecimal.ZERO); -// performanceScore.setProfitManagementMarketValueExitScore(BigDecimal.ZERO); -// performanceScore.setProfitDistributionScore(BigDecimal.ZERO); -// performanceScore.setInvestmentReportScore(BigDecimal.ZERO); -// performanceScore.setExperienceScore(BigDecimal.ZERO); -// performanceScore.setTotalScore(BigDecimal.ZERO); + + //防止后面算分有问题,在第一个步骤初始化成0 + performanceScore.setKnowledgeAssessmentScore(BigDecimal.ZERO); + performanceScore.setFundraisingScore(BigDecimal.ZERO); + performanceScore.setProjectSearchScore(BigDecimal.ZERO); + performanceScore.setProjectSearchReportScore(BigDecimal.ZERO); + performanceScore.setProjectDueDiligenceScore(BigDecimal.ZERO); + performanceScore.setProjectValuationEstimationRiskScore(BigDecimal.ZERO); + performanceScore.setProjectDueDiligenceBusinessReportScore(BigDecimal.ZERO); + performanceScore.setProjectDueDiligenceFinanceReportScore(BigDecimal.ZERO); + performanceScore.setProjectValuationRelativeScore(BigDecimal.ZERO); + performanceScore.setProjectValuationScore(BigDecimal.ZERO); + performanceScore.setProjectValuationAbsoluteScore(BigDecimal.ZERO); + performanceScore.setProjectUseValuationAbsoluteScore(BigDecimal.ZERO); + performanceScore.setProjectUseValuationRelativeScore(BigDecimal.ZERO); + performanceScore.setInvestmentSigningVlauationReportScore(BigDecimal.ZERO); + performanceScore.setInvestmentSigningDiligenceReportScore(BigDecimal.ZERO); + performanceScore.setInvestmentSigningInvestScore(BigDecimal.ZERO); + performanceScore.setInvestmentSigningScore(BigDecimal.ZERO); + performanceScore.setIpoFlowScore(BigDecimal.ZERO); + performanceScore.setIpoListedConditionScore(BigDecimal.ZERO); + performanceScore.setIpoListedSectorScore(BigDecimal.ZERO); + performanceScore.setNewPricingIssuanceScore(BigDecimal.ZERO); + performanceScore.setPricingIssuanceConfirmScore(BigDecimal.ZERO); + performanceScore.setInitPricingIssuanceScore(BigDecimal.ZERO); + performanceScore.setPricingIssuanceEnteringScore(BigDecimal.ZERO); + performanceScore.setProfitManagementMarketValueScore(BigDecimal.ZERO); + performanceScore.setProfitManagementFundScore(BigDecimal.ZERO); + performanceScore.setProfitManagementFundExitScore(BigDecimal.ZERO); + performanceScore.setProfitManagementMarketValueExitScore(BigDecimal.ZERO); + performanceScore.setProfitDistributionScore(BigDecimal.ZERO); + performanceScore.setInvestmentReportScore(BigDecimal.ZERO); + performanceScore.setExperienceScore(BigDecimal.ZERO); + performanceScore.setTotalScore(BigDecimal.ZERO); performanceScoreMapper.insert(performanceScore); - return new ResultEntity<>(score); } diff --git a/src/main/java/com/sztzjy/fund_investment/controller/tea/ClassScoreController.java b/src/main/java/com/sztzjy/fund_investment/controller/tea/ClassScoreController.java index b01ea3a..24d84f9 100644 --- a/src/main/java/com/sztzjy/fund_investment/controller/tea/ClassScoreController.java +++ b/src/main/java/com/sztzjy/fund_investment/controller/tea/ClassScoreController.java @@ -1,10 +1,18 @@ package com.sztzjy.fund_investment.controller.tea; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.pagehelper.PageInfo; import com.sztzjy.fund_investment.annotation.AnonymousAccess; +import com.sztzjy.fund_investment.config.security.TokenProvider; import com.sztzjy.fund_investment.entity.TeaClassScore; -import com.sztzjy.fund_investment.entity.dto.TeaClassScoreDto; -import com.sztzjy.fund_investment.entity.dto.UserDto; +import com.sztzjy.fund_investment.entity.TrainingReport; +import com.sztzjy.fund_investment.entity.UserTable; +import com.sztzjy.fund_investment.entity.UserTableExample; +import com.sztzjy.fund_investment.entity.dto.*; +import com.sztzjy.fund_investment.mapper.TrainingReportMapper; +import com.sztzjy.fund_investment.mapper.UserTableMapper; +import com.sztzjy.fund_investment.service.PerformanceScoreService; import com.sztzjy.fund_investment.service.tea.ClassScoreService; import com.sztzjy.fund_investment.util.ResultEntity; import io.swagger.annotations.Api; @@ -13,14 +21,14 @@ import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; /** * @Author xcj @@ -28,11 +36,18 @@ import java.util.List; */ @RestController @RequestMapping("/tea/grade") -@Api(tags = "老师端--成绩管理/成绩详情") +@Api(tags = "老师端--成绩管理&成绩详情") public class ClassScoreController { @Autowired private ClassScoreService classScoreService; + @Autowired + private TrainingReportMapper trainingReportMapper; + @Autowired + private PerformanceScoreService performanceScoreService; + @Autowired + private UserTableMapper userTableMapper; + @AnonymousAccess @GetMapping("/getClassAVGScore") @@ -52,7 +67,7 @@ public class ClassScoreController { @AnonymousAccess @GetMapping("/getStudentScoreDetails") - @ApiOperation("成绩详情/成绩详情查询 展示") //只显示已提交报告的学生数据 + @ApiOperation("成绩管理/成绩管理页面查询/展示") public ResultEntity> getStudentScoreDetails(@RequestParam Integer index, @RequestParam Integer size, @RequestParam String schoolId, @@ -72,7 +87,96 @@ public class ClassScoreController { @GetMapping("/autoScore") @ApiOperation("成绩管理/智能评分") public ResultEntity autoScore(@RequestParam String schoolId) { - return classScoreService.autoScore(schoolId); + return classScoreService.autoScore(schoolId); } + @AnonymousAccess + @GetMapping("/getPerformanceScoreDto") + @ApiOperation("成绩详情/实训进度页面/展示") + public ResultEntity getPerformanceScoreDto(@ApiParam("页面返回的得分ID") @RequestParam String performanceScoreId) { + return new ResultEntity<>(classScoreService.getPerformanceScoreDto(performanceScoreId)); + } + + @AnonymousAccess + @GetMapping("/getStuTrainingScore") + @ApiOperation("成绩详情/实训成绩/展示") + public ResultEntity getStuTrainingScore(@ApiParam("页面返回的得分ID") @RequestParam String performanceScoreId) { + return new ResultEntity<>(classScoreService.getStuTrainingScore(performanceScoreId)); + } + + @AnonymousAccess + @GetMapping("/getReportStringByFlowId") + @ApiOperation("成绩详情/实训成绩/五个文本框展示") + public ResultEntity getReportStringByFlowId(@RequestParam String flowId) { + return new ResultEntity<>(classScoreService.getReportStringByFlowId(flowId)); + } + + @AnonymousAccess + @PostMapping("/updateScoreByFlowId") + @ApiOperation("成绩详情/实训成绩/五个文本框修改分数") + public ResultEntity updateScoreByFlowId(@RequestParam String flowId, + @ApiParam("传Map的json字符串,例:{\"业务尽调结论\": 1,\"财务尽调结论\": 2}") @RequestParam String json) { + Map map; + try { + ObjectMapper objectMapper = new ObjectMapper(); + map = objectMapper.readValue(json, new TypeReference>() { + }); + } catch (Exception e) { + throw new ClassCastException("类型转换错误"); + } + return classScoreService.updateScoreByFlowId(flowId, map); + } + + + @AnonymousAccess + @PostMapping("/getExperience") + @ApiOperation("成绩详情/实训心得/页面展示") + public ResultEntity getExperience(@RequestParam String reportId) { + return new ResultEntity(trainingReportMapper.selectByPrimaryKey(reportId)); + } + + + @AnonymousAccess + @GetMapping("/downloadReport") + @ApiOperation("成绩详情/实训心得/报告下载") + public void downloadReport(@RequestParam String reportId, String TOKEN, HttpServletResponse response) { + TokenProvider.getJWTUser(TOKEN); + classScoreService.downloadReport(reportId, response); + } + + + @AnonymousAccess + @PostMapping("/updateExperienceScore") + @ApiOperation("成绩详情/实训心得/修改心得或报告分数") + public void updateScoreByFlowId(@RequestParam String reportId, + @RequestParam Integer score, + @ApiParam("0为心得,1为报告") @RequestParam Integer type) { + TrainingReport trainingReport = trainingReportMapper.selectByPrimaryKey(reportId); + + if (type == 0) { + trainingReport.setExperienceScore(BigDecimal.valueOf(score)); + performanceScoreService.calculateScoreByModule("experienceScore", score, trainingReport.getFlowId()); + } + if (type == 1) { + trainingReport.setReportScore(BigDecimal.valueOf(score)); + performanceScoreService.calculateScoreByModule("investmentReportScore", score, trainingReport.getFlowId()); + } + trainingReportMapper.updateByPrimaryKey(trainingReport); + } + + @AnonymousAccess + @GetMapping("/getClassNameBySchoolId") + @ApiOperation("成绩管理&互动答疑/班级下拉框") + public ResultEntity> getClassNameBySchoolId(@RequestParam String schoolId) { + UserTableExample userTableExample = new UserTableExample(); + userTableExample.createCriteria().andSchoolIdEqualTo(schoolId); + List userTables = userTableMapper.selectByExample(userTableExample); + List list = new ArrayList<>(); + for (UserTable userTable : userTables) { + list.add(userTable.getClassName()); + } + return new ResultEntity>(list); + } + + } diff --git a/src/main/java/com/sztzjy/fund_investment/controller/tea/TeaTopicManageController.java b/src/main/java/com/sztzjy/fund_investment/controller/tea/TeaTopicManageController.java new file mode 100644 index 0000000..52b7064 --- /dev/null +++ b/src/main/java/com/sztzjy/fund_investment/controller/tea/TeaTopicManageController.java @@ -0,0 +1,110 @@ +package com.sztzjy.fund_investment.controller.tea; + +import com.github.pagehelper.PageInfo; +import com.sztzjy.fund_investment.annotation.AnonymousAccess; +import com.sztzjy.fund_investment.entity.QuestionAnswerWithBLOBs; +import com.sztzjy.fund_investment.entity.TopicsWithBLOBs; +import com.sztzjy.fund_investment.entity.dto.QuestionAnswerDto; +import com.sztzjy.fund_investment.mapper.QuestionAnswerMapper; +import com.sztzjy.fund_investment.mapper.TopicsMapper; +import com.sztzjy.fund_investment.service.tea.TeaTopicManageService; +import com.sztzjy.fund_investment.util.ResultEntity; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +/** + * @Author xcj + * @Date 2023/12/1 + */ + +@RequestMapping("/tea/topics") +@RestController +@Api(tags = "老师端--试题管理&互动答疑") +public class TeaTopicManageController { + @Autowired + private TeaTopicManageService teaTopicManageService; + @Autowired + private TopicsMapper topicsMapper; + @Autowired + private QuestionAnswerMapper questionAnswerMapper; + + + @AnonymousAccess + @GetMapping("/insertTopics") + @ApiOperation("试题管理/新增试题") + public ResultEntity insertTopics(@ApiParam("topicId给字符串uuid,analysis,userAnswer,选项CDE允许为空,其他必填,source固定为【自增】,module值同导入功能模块") + @RequestBody TopicsWithBLOBs topics) { + return teaTopicManageService.insertTopics(topics); + } + + + @AnonymousAccess + @GetMapping("/getTopicsBySchoolId") + @ApiOperation("试题管理/页面搜索展示") + public ResultEntity> getTopicsBySchoolId(@RequestParam Integer index, + @RequestParam Integer size, + @RequestParam String schoolId, + @ApiParam("module值同导入功能模块") @RequestParam String module, + @ApiParam("搜索框/题干") @RequestParam(required = false) String topicContent) { + return new ResultEntity>(teaTopicManageService.getTopicsBySchoolId(index, size, schoolId, module, topicContent)); + } + + @AnonymousAccess + @GetMapping("/getByTopicId") + @ApiOperation("试题管理/查看单条数据") + public ResultEntity getByTopicId(@RequestParam String topicId) { + return new ResultEntity(topicsMapper.selectByPrimaryKey(topicId)); + } + + + @AnonymousAccess + @DeleteMapping("/deleteByTopicId") + @ApiOperation("试题管理/删除单个试题(只能删除自主新增试题)") + public ResultEntity deleteByTopicId(@RequestParam String topicId) { + TopicsWithBLOBs topicsWithBLOBs = topicsMapper.selectByPrimaryKey(topicId); + if (topicsWithBLOBs.getSource().equals("内置")) { + return new ResultEntity(HttpStatus.OK, "内置试题不支持删除!"); + } + topicsMapper.deleteByPrimaryKey(topicId); + return new ResultEntity(HttpStatus.OK, "删除成功!"); + } + + + @AnonymousAccess + @GetMapping("/getQuestionAnswer") + @ApiOperation("互动答疑/展示搜索") + public ResultEntity> getQuestionAnswer(@RequestParam Integer index, + @RequestParam Integer size, + @RequestParam String schoolId, + @ApiParam("班级下拉框") @RequestParam(required = false) String className, + @ApiParam("姓名/学号") @RequestParam(required = false) String keyWord) { + return new ResultEntity<>(teaTopicManageService.getQuestionAnswer(index, size, schoolId, className, keyWord)); + } + + @AnonymousAccess + @GetMapping("/recover") + @ApiOperation("互动答疑/回复问题") + public ResultEntity deleteByTopicId(@ApiParam("展示接口中的id字段") @RequestParam String questionId, + @ApiParam("回复内容") String content) { + QuestionAnswerWithBLOBs questionAnswerWithBLOBs = questionAnswerMapper.selectByPrimaryKey(questionId); + if (questionAnswerWithBLOBs == null) { + return new ResultEntity(HttpStatus.INTERNAL_SERVER_ERROR, "数据不存在!"); + } + questionAnswerWithBLOBs.setReplyContent(content); + questionAnswerMapper.updateByPrimaryKey(questionAnswerWithBLOBs); + return new ResultEntity(HttpStatus.OK, "回复成功!"); + } + + + @AnonymousAccess + @GetMapping("/getQuestionById") + @ApiOperation("互动答疑/回复问题") + public ResultEntity getQuestionById(@ApiParam("展示接口中的id字段") @RequestParam String questionId) { + return new ResultEntity(questionAnswerMapper.selectByPrimaryKey(questionId)); + } + +} diff --git a/src/main/java/com/sztzjy/fund_investment/entity/dto/FoundProjectDto.java b/src/main/java/com/sztzjy/fund_investment/entity/dto/FoundProjectDto.java new file mode 100644 index 0000000..d35dc50 --- /dev/null +++ b/src/main/java/com/sztzjy/fund_investment/entity/dto/FoundProjectDto.java @@ -0,0 +1,135 @@ +package com.sztzjy.fund_investment.entity.dto; + +import io.swagger.annotations.ApiModelProperty; + +import java.math.BigDecimal; + +/** + * + * @author xcj + * found_project + */ +public class FoundProjectDto { + @ApiModelProperty("流程id") + private String flowId; + + @ApiModelProperty("寻找项目结论") + private String foundProjectConclusion; + + @ApiModelProperty("业务尽调结论") + private String serviceDueDiligence; + + @ApiModelProperty("财务尽调结论") + private String financialDueDiligence; + + @ApiModelProperty("项目相对估值结论") + private String projectValuationRelative; + + @ApiModelProperty("项目绝对估值结论") + private String projectValuationAbsolute; + + + @ApiModelProperty("寻找项目结论得分") + private BigDecimal foundProjectConclusionScore; + + @ApiModelProperty("业务尽调结论得分") + private BigDecimal serviceDueDiligenceScore; + + @ApiModelProperty("财务尽调结论得分") + private BigDecimal financialDueDiligenceScore; + + @ApiModelProperty("项目相对估值结论得分") + private BigDecimal projectValuationRelativeScore; + + @ApiModelProperty("项目绝对估值结论得分") + private BigDecimal projectValuationAbsoluteScore; + + + public String getFlowId() { + return flowId; + } + + public void setFlowId(String flowId) { + this.flowId = flowId; + } + + public String getFoundProjectConclusion() { + return foundProjectConclusion; + } + + public void setFoundProjectConclusion(String foundProjectConclusion) { + this.foundProjectConclusion = foundProjectConclusion; + } + + public String getServiceDueDiligence() { + return serviceDueDiligence; + } + + public void setServiceDueDiligence(String serviceDueDiligence) { + this.serviceDueDiligence = serviceDueDiligence; + } + + public String getFinancialDueDiligence() { + return financialDueDiligence; + } + + public void setFinancialDueDiligence(String financialDueDiligence) { + this.financialDueDiligence = financialDueDiligence; + } + + public String getProjectValuationRelative() { + return projectValuationRelative; + } + + public void setProjectValuationRelative(String projectValuationRelative) { + this.projectValuationRelative = projectValuationRelative; + } + + public String getProjectValuationAbsolute() { + return projectValuationAbsolute; + } + + public void setProjectValuationAbsolute(String projectValuationAbsolute) { + this.projectValuationAbsolute = projectValuationAbsolute; + } + + public BigDecimal getFoundProjectConclusionScore() { + return foundProjectConclusionScore; + } + + public void setFoundProjectConclusionScore(BigDecimal foundProjectConclusionScore) { + this.foundProjectConclusionScore = foundProjectConclusionScore; + } + + public BigDecimal getServiceDueDiligenceScore() { + return serviceDueDiligenceScore; + } + + public void setServiceDueDiligenceScore(BigDecimal serviceDueDiligenceScore) { + this.serviceDueDiligenceScore = serviceDueDiligenceScore; + } + + public BigDecimal getFinancialDueDiligenceScore() { + return financialDueDiligenceScore; + } + + public void setFinancialDueDiligenceScore(BigDecimal financialDueDiligenceScore) { + this.financialDueDiligenceScore = financialDueDiligenceScore; + } + + public BigDecimal getProjectValuationRelativeScore() { + return projectValuationRelativeScore; + } + + public void setProjectValuationRelativeScore(BigDecimal projectValuationRelativeScore) { + this.projectValuationRelativeScore = projectValuationRelativeScore; + } + + public BigDecimal getProjectValuationAbsoluteScore() { + return projectValuationAbsoluteScore; + } + + public void setProjectValuationAbsoluteScore(BigDecimal projectValuationAbsoluteScore) { + this.projectValuationAbsoluteScore = projectValuationAbsoluteScore; + } +} \ No newline at end of file diff --git a/src/main/java/com/sztzjy/fund_investment/entity/dto/PerformanceScoreDto.java b/src/main/java/com/sztzjy/fund_investment/entity/dto/PerformanceScoreDto.java new file mode 100644 index 0000000..5a879b4 --- /dev/null +++ b/src/main/java/com/sztzjy/fund_investment/entity/dto/PerformanceScoreDto.java @@ -0,0 +1,322 @@ +package com.sztzjy.fund_investment.entity.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author xcj + * performance_score + */ +public class PerformanceScoreDto { + @ApiModelProperty("表ID") + private String id; + + @ApiModelProperty("流程ID") + private String flowId; + + @ApiModelProperty("实务认知学习进度") + private String practicalCognitionSchedule; + + @ApiModelProperty("知识测评进度") + private String knowledgeAssessmentSchedule; + + @ApiModelProperty("基金募资进度") + private String fundraisingSchedule; + + @ApiModelProperty("寻找项目进度") + private String projectSearchSchedule; + + @ApiModelProperty("项目尽调进度") + private String projectDueDiligenceSchedule; + + @ApiModelProperty("项目估值进度") + private String projectValuationSchedule; + + @ApiModelProperty("签约投资进度") + private String investmentSigningSchedule; + + @ApiModelProperty("IPO申请进度") + private String ipoSchedule; + + @ApiModelProperty("询价发行进度") + private String pricingIssuanceSchedule; + + @ApiModelProperty("收益管理进度") + private String profitManagementSchedule; + + @ApiModelProperty("收益分配进度") + private String profitDistributionSchedule; + + @ApiModelProperty("投资报告进度") + private String investmentReportSchedule; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("实务认知完成时间") + private Date practicalCognitionTime; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("知识测评完成时间") + private Date knowledgeAssessmentTime; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("基金募资完成时间") + private Date fundraisingTime; + + @ApiModelProperty("寻找项目完成时间") + private Date projectSearchTime; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("项目尽调完成时间") + private Date projectDueDiligenceTime; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("项目估值完成时间") + private Date projectValuationTime; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("签约投资完成时间") + private Date investmentSigningTime; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("ipo页面完成时间") + private Date ipoTime; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("询价发行完成时间") + private Date pricingIssuanceTime; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("收益管理完成时间") + private Date profitManagementTime; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("收益分配完成时间") + private Date profitDistributionTime; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("投资报告页面完成时间") + private Date investmentReportTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFlowId() { + return flowId; + } + + public void setFlowId(String flowId) { + this.flowId = flowId; + } + + public String getPracticalCognitionSchedule() { + return practicalCognitionSchedule; + } + + public void setPracticalCognitionSchedule(String practicalCognitionSchedule) { + this.practicalCognitionSchedule = practicalCognitionSchedule; + } + + public String getKnowledgeAssessmentSchedule() { + return knowledgeAssessmentSchedule; + } + + public void setKnowledgeAssessmentSchedule(String knowledgeAssessmentSchedule) { + this.knowledgeAssessmentSchedule = knowledgeAssessmentSchedule; + } + + public String getFundraisingSchedule() { + return fundraisingSchedule; + } + + public void setFundraisingSchedule(String fundraisingSchedule) { + this.fundraisingSchedule = fundraisingSchedule; + } + + public String getProjectSearchSchedule() { + return projectSearchSchedule; + } + + public void setProjectSearchSchedule(String projectSearchSchedule) { + this.projectSearchSchedule = projectSearchSchedule; + } + + public String getProjectDueDiligenceSchedule() { + return projectDueDiligenceSchedule; + } + + public void setProjectDueDiligenceSchedule(String projectDueDiligenceSchedule) { + this.projectDueDiligenceSchedule = projectDueDiligenceSchedule; + } + + public String getProjectValuationSchedule() { + return projectValuationSchedule; + } + + public void setProjectValuationSchedule(String projectValuationSchedule) { + this.projectValuationSchedule = projectValuationSchedule; + } + + public String getInvestmentSigningSchedule() { + return investmentSigningSchedule; + } + + public void setInvestmentSigningSchedule(String investmentSigningSchedule) { + this.investmentSigningSchedule = investmentSigningSchedule; + } + + public String getIpoSchedule() { + return ipoSchedule; + } + + public void setIpoSchedule(String ipoSchedule) { + this.ipoSchedule = ipoSchedule; + } + + public String getPricingIssuanceSchedule() { + return pricingIssuanceSchedule; + } + + public void setPricingIssuanceSchedule(String pricingIssuanceSchedule) { + this.pricingIssuanceSchedule = pricingIssuanceSchedule; + } + + public String getProfitManagementSchedule() { + return profitManagementSchedule; + } + + public void setProfitManagementSchedule(String profitManagementSchedule) { + this.profitManagementSchedule = profitManagementSchedule; + } + + public String getProfitDistributionSchedule() { + return profitDistributionSchedule; + } + + public void setProfitDistributionSchedule(String profitDistributionSchedule) { + this.profitDistributionSchedule = profitDistributionSchedule; + } + + public String getInvestmentReportSchedule() { + return investmentReportSchedule; + } + + public void setInvestmentReportSchedule(String investmentReportSchedule) { + this.investmentReportSchedule = investmentReportSchedule; + } + + public Date getPracticalCognitionTime() { + return practicalCognitionTime; + } + + public void setPracticalCognitionTime(Date practicalCognitionTime) { + this.practicalCognitionTime = practicalCognitionTime; + } + + public Date getKnowledgeAssessmentTime() { + return knowledgeAssessmentTime; + } + + public void setKnowledgeAssessmentTime(Date knowledgeAssessmentTime) { + this.knowledgeAssessmentTime = knowledgeAssessmentTime; + } + + public Date getFundraisingTime() { + return fundraisingTime; + } + + public void setFundraisingTime(Date fundraisingTime) { + this.fundraisingTime = fundraisingTime; + } + + public Date getProjectSearchTime() { + return projectSearchTime; + } + + public void setProjectSearchTime(Date projectSearchTime) { + this.projectSearchTime = projectSearchTime; + } + + public Date getProjectDueDiligenceTime() { + return projectDueDiligenceTime; + } + + public void setProjectDueDiligenceTime(Date projectDueDiligenceTime) { + this.projectDueDiligenceTime = projectDueDiligenceTime; + } + + public Date getProjectValuationTime() { + return projectValuationTime; + } + + public void setProjectValuationTime(Date projectValuationTime) { + this.projectValuationTime = projectValuationTime; + } + + public Date getInvestmentSigningTime() { + return investmentSigningTime; + } + + public void setInvestmentSigningTime(Date investmentSigningTime) { + this.investmentSigningTime = investmentSigningTime; + } + + public Date getIpoTime() { + return ipoTime; + } + + public void setIpoTime(Date ipoTime) { + this.ipoTime = ipoTime; + } + + public Date getPricingIssuanceTime() { + return pricingIssuanceTime; + } + + public void setPricingIssuanceTime(Date pricingIssuanceTime) { + this.pricingIssuanceTime = pricingIssuanceTime; + } + + public Date getProfitManagementTime() { + return profitManagementTime; + } + + public void setProfitManagementTime(Date profitManagementTime) { + this.profitManagementTime = profitManagementTime; + } + + public Date getProfitDistributionTime() { + return profitDistributionTime; + } + + public void setProfitDistributionTime(Date profitDistributionTime) { + this.profitDistributionTime = profitDistributionTime; + } + + public Date getInvestmentReportTime() { + return investmentReportTime; + } + + public void setInvestmentReportTime(Date investmentReportTime) { + this.investmentReportTime = investmentReportTime; + } +} \ No newline at end of file diff --git a/src/main/java/com/sztzjy/fund_investment/entity/dto/PerformanceTrainingScoreDto.java b/src/main/java/com/sztzjy/fund_investment/entity/dto/PerformanceTrainingScoreDto.java new file mode 100644 index 0000000..2a96e0d --- /dev/null +++ b/src/main/java/com/sztzjy/fund_investment/entity/dto/PerformanceTrainingScoreDto.java @@ -0,0 +1,169 @@ +package com.sztzjy.fund_investment.entity.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author xcj + * performance_score + */ +public class PerformanceTrainingScoreDto { + + @ApiModelProperty("流程ID") + private String flowId; + + @ApiModelProperty("实务认知学习分数") + private BigDecimal practicalCognitionScore; + + @ApiModelProperty("知识测评分数") + private BigDecimal knowledgeAssessmentScore; + + @ApiModelProperty("基金募资分数") + private BigDecimal fundraisingScore; + + @ApiModelProperty("寻找项目分数") + private BigDecimal projectSearchScore; + + @ApiModelProperty("项目尽调分数") + private BigDecimal projectDueDiligenceScore; + + @ApiModelProperty("项目估值分数") + private BigDecimal projectValuationScore; + + @ApiModelProperty("签约投资分数") + private BigDecimal investmentSigningScore; + + @ApiModelProperty("IPO申请分数") + private BigDecimal ipoScore; + + @ApiModelProperty("询价发行分数") + private BigDecimal pricingIssuanceScore; + + @ApiModelProperty("收益管理分数") + private BigDecimal profitManagementScore; + + @ApiModelProperty("收益分配分数") + private BigDecimal profitDistributionScore; + + @ApiModelProperty("投资报告分数") + private BigDecimal investmentReportScore; + + @ApiModelProperty("总成绩") + private BigDecimal totalScore; + + public BigDecimal getTotalScore() { + return totalScore; + } + + public void setTotalScore(BigDecimal totalScore) { + this.totalScore = totalScore; + } + + public String getFlowId() { + return flowId; + } + + public void setFlowId(String flowId) { + this.flowId = flowId; + } + + public BigDecimal getPracticalCognitionScore() { + return practicalCognitionScore; + } + + public void setPracticalCognitionScore(BigDecimal practicalCognitionScore) { + this.practicalCognitionScore = practicalCognitionScore; + } + + public BigDecimal getKnowledgeAssessmentScore() { + return knowledgeAssessmentScore; + } + + public void setKnowledgeAssessmentScore(BigDecimal knowledgeAssessmentScore) { + this.knowledgeAssessmentScore = knowledgeAssessmentScore; + } + + public BigDecimal getFundraisingScore() { + return fundraisingScore; + } + + public void setFundraisingScore(BigDecimal fundraisingScore) { + this.fundraisingScore = fundraisingScore; + } + + public BigDecimal getProjectSearchScore() { + return projectSearchScore; + } + + public void setProjectSearchScore(BigDecimal projectSearchScore) { + this.projectSearchScore = projectSearchScore; + } + + public BigDecimal getProjectDueDiligenceScore() { + return projectDueDiligenceScore; + } + + public void setProjectDueDiligenceScore(BigDecimal projectDueDiligenceScore) { + this.projectDueDiligenceScore = projectDueDiligenceScore; + } + + public BigDecimal getProjectValuationScore() { + return projectValuationScore; + } + + public void setProjectValuationScore(BigDecimal projectValuationScore) { + this.projectValuationScore = projectValuationScore; + } + + public BigDecimal getInvestmentSigningScore() { + return investmentSigningScore; + } + + public void setInvestmentSigningScore(BigDecimal investmentSigningScore) { + this.investmentSigningScore = investmentSigningScore; + } + + public BigDecimal getIpoScore() { + return ipoScore; + } + + public void setIpoScore(BigDecimal ipoScore) { + this.ipoScore = ipoScore; + } + + public BigDecimal getPricingIssuanceScore() { + return pricingIssuanceScore; + } + + public void setPricingIssuanceScore(BigDecimal pricingIssuanceScore) { + this.pricingIssuanceScore = pricingIssuanceScore; + } + + public BigDecimal getProfitManagementScore() { + return profitManagementScore; + } + + public void setProfitManagementScore(BigDecimal profitManagementScore) { + this.profitManagementScore = profitManagementScore; + } + + public BigDecimal getProfitDistributionScore() { + return profitDistributionScore; + } + + public void setProfitDistributionScore(BigDecimal profitDistributionScore) { + this.profitDistributionScore = profitDistributionScore; + } + + public BigDecimal getInvestmentReportScore() { + return investmentReportScore; + } + + public void setInvestmentReportScore(BigDecimal investmentReportScore) { + this.investmentReportScore = investmentReportScore; + } +} \ No newline at end of file diff --git a/src/main/java/com/sztzjy/fund_investment/entity/dto/QuestionAnswerDto.java b/src/main/java/com/sztzjy/fund_investment/entity/dto/QuestionAnswerDto.java new file mode 100644 index 0000000..fa5cee9 --- /dev/null +++ b/src/main/java/com/sztzjy/fund_investment/entity/dto/QuestionAnswerDto.java @@ -0,0 +1,40 @@ +package com.sztzjy.fund_investment.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author xcj + * @Date 2023/12/1 + */ +@Data +public class QuestionAnswerDto { + @ApiModelProperty("表ID") + private String id; + + @ApiModelProperty("流程ID") + private String flowId; + + @ApiModelProperty("学校ID") + private String schoolid; + + @ApiModelProperty("提问时间") + private Date questionTime; + + @ApiModelProperty("提问内容") + private String questionContent; + + @ApiModelProperty("回复内容") + private String replyContent; + + @ApiModelProperty("姓名") + private String name; + + @ApiModelProperty("学号") + private String studentId; + + @ApiModelProperty("班级名称") + private String className; +} diff --git a/src/main/java/com/sztzjy/fund_investment/entity/dto/UserDto.java b/src/main/java/com/sztzjy/fund_investment/entity/dto/UserDto.java index dc388c8..6aa9c03 100644 --- a/src/main/java/com/sztzjy/fund_investment/entity/dto/UserDto.java +++ b/src/main/java/com/sztzjy/fund_investment/entity/dto/UserDto.java @@ -13,6 +13,9 @@ import java.math.BigDecimal; public class UserDto { private String userid; + @ApiModelProperty("用户得分ID") + private String performanceScoreId; + @ApiModelProperty("流程ID") private String flowId; @@ -40,6 +43,6 @@ public class UserDto { @ApiModelProperty("报告名称") private String reportName; - @ApiModelProperty("报告url") - private String url; + @ApiModelProperty("报告ID") + private String reportId; } diff --git a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/PerformanceScoreServiceImpl.java b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/PerformanceScoreServiceImpl.java index e089955..338686b 100644 --- a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/PerformanceScoreServiceImpl.java +++ b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/PerformanceScoreServiceImpl.java @@ -31,9 +31,9 @@ public class PerformanceScoreServiceImpl implements PerformanceScoreService { List performanceScores = performanceScoreMapper.selectByExample(performanceScoreExample); PerformanceScore performanceScore = performanceScores.get(0); -// BigDecimal scoreOld =(BigDecimal) performanceScore.get(methodName); -// BigDecimal addScore = scoreOld.add(BigDecimal.valueOf(score)); + BigDecimal scoreOld =(BigDecimal) performanceScore.get(methodName); performanceScore.set(methodName, BigDecimal.valueOf(score)); + performanceScore.setTotalScore(performanceScore.getTotalScore().add(BigDecimal.valueOf(score).subtract(scoreOld))); performanceScoreMapper.updateByPrimaryKey(performanceScore); } diff --git a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/tea/ClassScoreServiceImpl.java b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/tea/ClassScoreServiceImpl.java index 33bb1ac..133c702 100644 --- a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/tea/ClassScoreServiceImpl.java +++ b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/tea/ClassScoreServiceImpl.java @@ -2,19 +2,22 @@ package com.sztzjy.fund_investment.service.serviceImpl.tea; import cn.hutool.core.util.IdUtil; import com.github.pagehelper.PageInfo; +import com.sztzjy.fund_investment.config.Constant; import com.sztzjy.fund_investment.entity.*; -import com.sztzjy.fund_investment.entity.dto.TeaClassScoreDto; -import com.sztzjy.fund_investment.entity.dto.UserDto; +import com.sztzjy.fund_investment.entity.dto.*; import com.sztzjy.fund_investment.mapper.*; import com.sztzjy.fund_investment.service.PerformanceScoreService; import com.sztzjy.fund_investment.service.tea.ClassScoreService; import com.sztzjy.fund_investment.util.PageUtil; import com.sztzjy.fund_investment.util.ResultEntity; import com.sztzjy.fund_investment.util.excel.FilePortUtil; +import com.sztzjy.fund_investment.util.file.IFileUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.util.Assert; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; @@ -43,6 +46,8 @@ public class ClassScoreServiceImpl implements ClassScoreService { private PerformanceScoreService performanceScoreService; @Autowired private TrainingReportMapper trainingReportMapper; + @Autowired + private IFileUtil fileUtil; /* @@ -121,11 +126,12 @@ public class ClassScoreServiceImpl implements ClassScoreService { UserTableExample userTableExample = new UserTableExample(); UserTableExample.Criteria criteria = userTableExample.createCriteria(); UserTableExample.Criteria orCriteria = userTableExample.createCriteria(); - criteria.andSchoolIdEqualTo(schoolId); - if (!classId.isEmpty()) { + if (StringUtils.isNotBlank(classId)) { criteria.andClassIdEqualTo(classId); + }else { + criteria.andSchoolIdEqualTo(schoolId); } - if (!studentIdOrName.isEmpty()) { + if (StringUtils.isNotBlank(studentIdOrName)) { criteria.andNameEqualTo(studentIdOrName); orCriteria.andStudentIdEqualTo(studentIdOrName); } @@ -138,30 +144,24 @@ public class ClassScoreServiceImpl implements ClassScoreService { Flow flow = flowMapper.selectByPrimaryKey(userTable.getUserid()); String flowId = flow.getFlowId(); TrainingReportExample trainingReportExample = new TrainingReportExample(); - trainingReportExample.createCriteria().andFlowIdEqualTo(flowId).andSchoolIdEqualTo(schoolId); + trainingReportExample.createCriteria().andFlowIdEqualTo(flowId); //todo 查询时看需不需要加上模块 List trainingReports = reportMapper.selectByExample(trainingReportExample); - - //老师端只展示提交了报告的有得分的数据,先筛选再封装 - if (trainingReports.isEmpty()) { - continue; - } PerformanceScoreExample performanceScoreExample = new PerformanceScoreExample(); - performanceScoreExample.createCriteria().andFlowIdEqualTo(flowId).andSchoolIdEqualTo(schoolId); + performanceScoreExample.createCriteria().andFlowIdEqualTo(flowId); List performanceScores = performanceScoreMapper.selectByExample(performanceScoreExample); - if (performanceScores.isEmpty()) { - continue; - } - PerformanceScore performanceScore = performanceScores.get(0); - if (performanceScore.getInvestmentReportScore() == null || performanceScore.getInvestmentReportScore().compareTo(BigDecimal.ZERO) == 0) { - continue; - } - for (TrainingReport trainingReport : trainingReports) { - userDto.setUrl(trainingReport.getUrl()); - userDto.setReportName(trainingReport.getReportName()); + if (!performanceScores.isEmpty()) { + PerformanceScore performanceScore = performanceScores.get(0); + if (!trainingReports.isEmpty()) { + for (TrainingReport trainingReport : trainingReports) { + userDto.setReportId(trainingReport.getId()); + userDto.setReportName(trainingReport.getReportName()); + } + userDto.setFlowId(flowId); + userDto.setScore(performanceScore.getTotalScore()); + userDto.setPerformanceScoreId(performanceScore.getId()); + userDtoList.add(userDto); + } } - userDto.setFlowId(flowId); - userDto.setScore(performanceScore.getTotalScore()); - userDtoList.add(userDto); } if (userDtoList.size() <= 0) { return null; @@ -200,7 +200,6 @@ public class ClassScoreServiceImpl implements ClassScoreService { } PerformanceScore performanceScore = performanceScores.get(0); for (TrainingReport trainingReport : trainingReports) { - userDto.setUrl(trainingReport.getUrl()); userDto.setReportName(trainingReport.getReportName()); } userDto.setFlowId(flowId); @@ -311,7 +310,7 @@ public class ClassScoreServiceImpl implements ClassScoreService { } //实验报告,未上传 0 分 上传得两分 - if (!(url.isEmpty())&&!(reportName.isEmpty())){ + if (!(url.isEmpty()) && !(reportName.isEmpty())) { performanceScoreService.calculateScoreByModule("investmentReportScore", 2, flowId);//todo 需要修改 trainingReport.setReportScore(BigDecimal.valueOf(2)); } @@ -323,6 +322,213 @@ public class ClassScoreServiceImpl implements ClassScoreService { return new ResultEntity<>(HttpStatus.NOT_FOUND); } + /* 用户成绩详情展示 + * @author xcj + * @Date 2023/11/29 + */ + @Override + public PerformanceScoreDto getPerformanceScoreDto(String performanceScoreId) { + PerformanceScore performanceScore = performanceScoreMapper.selectByPrimaryKey(performanceScoreId); + PerformanceScoreDto performanceScoreDto = new PerformanceScoreDto(); + //实务认知 + if (performanceScore.getPracticalCognitionTime() != null) { + performanceScoreDto.setPracticalCognitionSchedule(Constant.FINISHED); + performanceScoreDto.setPracticalCognitionTime(performanceScore.getPracticalCognitionTime()); + } else { + performanceScoreDto.setPracticalCognitionSchedule(Constant.UNFINISHED); + } + //知识测评 + if (performanceScore.getKnowledgeAssessmentTime() != null) { + performanceScoreDto.setKnowledgeAssessmentSchedule(Constant.FINISHED); + performanceScoreDto.setKnowledgeAssessmentTime(performanceScore.getKnowledgeAssessmentTime()); + } else { + performanceScoreDto.setKnowledgeAssessmentSchedule(Constant.UNFINISHED); + } + //基金募资 + if (performanceScore.getFundraisingTime() != null) { + performanceScoreDto.setFundraisingSchedule(Constant.FINISHED); + performanceScoreDto.setFundraisingTime(performanceScore.getFundraisingTime()); + } else { + performanceScoreDto.setFundraisingSchedule(Constant.UNFINISHED); + } + //寻找项目 + if (performanceScore.getProjectSearchTime() != null) { + performanceScoreDto.setProjectSearchSchedule(Constant.FINISHED); + performanceScoreDto.setProjectSearchTime(performanceScore.getProjectSearchTime()); + } else { + performanceScoreDto.setProjectSearchSchedule(Constant.UNFINISHED); + } + //项目尽调 + if (performanceScore.getProjectDueDiligenceTime() != null) { + performanceScoreDto.setProjectDueDiligenceSchedule(Constant.FINISHED); + performanceScoreDto.setProjectDueDiligenceTime(performanceScore.getProjectDueDiligenceTime()); + } else { + performanceScoreDto.setProjectDueDiligenceSchedule(Constant.UNFINISHED); + } + //项目估值 + if (performanceScore.getProjectValuationTime() != null) { + performanceScoreDto.setProjectValuationSchedule(Constant.FINISHED); + performanceScoreDto.setProjectValuationTime(performanceScore.getProjectValuationTime()); + } else { + performanceScoreDto.setProjectValuationSchedule(Constant.UNFINISHED); + } + //签约投资 + if (performanceScore.getInvestmentSigningTime() != null) { + performanceScoreDto.setInvestmentSigningSchedule(Constant.FINISHED); + performanceScoreDto.setInvestmentSigningTime(performanceScore.getInvestmentSigningTime()); + } else { + performanceScoreDto.setInvestmentSigningSchedule(Constant.UNFINISHED); + } + //IPO申请 + if (performanceScore.getIpoTime() != null) { + performanceScoreDto.setIpoSchedule(Constant.FINISHED); + performanceScoreDto.setIpoTime(performanceScore.getIpoTime()); + } else { + performanceScoreDto.setIpoSchedule(Constant.UNFINISHED); + } + //询价发行 + if (performanceScore.getPricingIssuanceTime() != null) { + performanceScoreDto.setPricingIssuanceSchedule(Constant.FINISHED); + performanceScoreDto.setPricingIssuanceTime(performanceScore.getPricingIssuanceTime()); + } else { + performanceScoreDto.setPricingIssuanceSchedule(Constant.UNFINISHED); + } + //收益管理 + if (performanceScore.getProfitManagementTime() != null) { + performanceScoreDto.setProfitManagementSchedule(Constant.FINISHED); + performanceScoreDto.setProfitManagementTime(performanceScore.getProfitManagementTime()); + } else { + performanceScoreDto.setProfitManagementSchedule(Constant.UNFINISHED); + } + //收益分配 + if (performanceScore.getProfitDistributionTime() != null) { + performanceScoreDto.setProfitDistributionSchedule(Constant.FINISHED); + performanceScoreDto.setProfitDistributionTime(performanceScore.getProfitDistributionTime()); + } else { + performanceScoreDto.setProfitDistributionSchedule(Constant.UNFINISHED); + } + //投资报告 + if (performanceScore.getInvestmentReportTime() != null) { + performanceScoreDto.setInvestmentReportSchedule(Constant.FINISHED); + performanceScoreDto.setInvestmentReportTime(performanceScore.getInvestmentReportTime()); + } else { + performanceScoreDto.setInvestmentReportSchedule(Constant.UNFINISHED); + } + return performanceScoreDto; + } + + + /* 实训成绩展示 + * @author xcj + * @Date 2023/11/29 + */ + @Override + public PerformanceTrainingScoreDto getStuTrainingScore(String performanceScoreId) { + PerformanceScore performanceScore = performanceScoreMapper.selectByPrimaryKey(performanceScoreId); + PerformanceTrainingScoreDto performanceTrainingScoreDto = new PerformanceTrainingScoreDto(); + performanceTrainingScoreDto.setFlowId(performanceScore.getFlowId()); + performanceTrainingScoreDto.setPracticalCognitionScore(performanceScore.getPracticalCognitionScore()); + performanceTrainingScoreDto.setKnowledgeAssessmentScore(performanceScore.getKnowledgeAssessmentScore()); + performanceTrainingScoreDto.setFundraisingScore(performanceScore.getFundraisingScore()); + performanceTrainingScoreDto.setProjectSearchScore(performanceScore.getProjectSearchScore().add(performanceScore.getProjectSearchReportScore())); + performanceTrainingScoreDto.setProjectDueDiligenceScore(performanceScore.getProjectDueDiligenceScore() + .add(performanceScore.getProjectDueDiligenceFinanceReportScore() + .add(performanceScore.getProjectDueDiligenceBusinessReportScore() + .add(performanceScore.getProjectValuationEstimationRiskScore())))); + + performanceTrainingScoreDto.setProjectValuationScore(performanceScore.getProjectValuationRelativeScore() + .add(performanceScore.getProjectValuationScore() + .add(performanceScore.getProjectValuationAbsoluteScore() + .add(performanceScore.getProjectUseValuationAbsoluteScore() + .add(performanceScore.getProjectUseValuationRelativeScore()))))); + performanceTrainingScoreDto.setInvestmentSigningScore(performanceScore.getInvestmentSigningVlauationReportScore() + .add(performanceScore.getInvestmentSigningDiligenceReportScore() + .add(performanceScore.getInvestmentSigningInvestScore() + .add(performanceScore.getInvestmentSigningScore())))); + + performanceTrainingScoreDto.setIpoScore(performanceScore.getIpoFlowScore().add(performanceScore.getIpoListedConditionScore() + .add(performanceScore.getIpoListedSectorScore()))); + + performanceTrainingScoreDto.setPricingIssuanceScore(performanceScore.getNewPricingIssuanceScore() + .add(performanceScore.getPricingIssuanceConfirmScore().add(performanceScore.getInitPricingIssuanceScore() + .add(performanceScore.getPricingIssuanceEnteringScore())))); + + performanceTrainingScoreDto.setProfitManagementScore(performanceScore.getProfitManagementMarketValueScore() + .add(performanceScore.getProfitManagementFundScore() + .add(performanceScore.getProfitManagementFundExitScore() + .add(performanceScore.getProfitManagementMarketValueExitScore())))); + + performanceTrainingScoreDto.setProfitDistributionScore(performanceScore.getProfitDistributionScore()); + performanceTrainingScoreDto.setInvestmentReportScore(performanceScore.getInvestmentReportScore().add(performanceScore.getExperienceScore())); + performanceTrainingScoreDto.setTotalScore(performanceScore.getTotalScore()); + return performanceTrainingScoreDto; + } + + /* 实训成绩页面展示五个结论及分数 + * @author xcj + * @Date 2023/11/30 + */ + @Override + public FoundProjectDto getReportStringByFlowId(String flowId) { + FoundProject foundProject = foundProjectMapper.selectByPrimaryKey(flowId); + FoundProjectDto dto = new FoundProjectDto(); + BeanUtils.copyProperties(foundProject, dto); + PerformanceScoreExample example = new PerformanceScoreExample(); + example.createCriteria().andFlowIdEqualTo(flowId); + List performanceScores = performanceScoreMapper.selectByExample(example); + PerformanceScore performanceScore = performanceScores.get(0); + dto.setFoundProjectConclusionScore(performanceScore.getProjectSearchReportScore()); + dto.setServiceDueDiligenceScore(performanceScore.getProjectDueDiligenceBusinessReportScore()); + dto.setFinancialDueDiligenceScore(performanceScore.getProjectDueDiligenceFinanceReportScore()); + dto.setProjectValuationRelativeScore(performanceScore.getProjectValuationRelativeScore()); + dto.setProjectValuationAbsoluteScore(performanceScore.getProjectValuationAbsoluteScore()); + return dto; + } + + + /* 实训成绩修改五个文本框的分数 + * @author xcj + * @Date 2023/11/30 + */ + @Override + public ResultEntity updateScoreByFlowId(String flowId, Map map) { + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey(); + Integer score = entry.getValue(); + try { + if (key.equals(Constant.XMGZFX)) { //寻找项目/评估结论得分 + performanceScoreService.calculateScoreByModule("projectSearchReportScore", score, flowId); + } + if (key.equals(Constant.YWJDJL)) { //项目尽调/业务尽调结论得分 + performanceScoreService.calculateScoreByModule("projectDueDiligenceBusinessReportScore", score, flowId); + } + if (key.equals(Constant.CWJDJL)) { //项目尽调/财务尽调结论得分 + performanceScoreService.calculateScoreByModule("projectDueDiligenceFinanceReportScore", score, flowId); + } + if (key.equals(Constant.XDGZJL)) { //项目估值/相对估值结论得分 + performanceScoreService.calculateScoreByModule("projectValuationRelativeScore", score, flowId); + } + if (key.equals(Constant.JDGZJL)) { //项目估值/绝对估值结论得分 + performanceScoreService.calculateScoreByModule("projectValuationAbsoluteScore", score, flowId); + } + } catch (Exception e) { + return new ResultEntity<>(HttpStatus.INTERNAL_SERVER_ERROR, "评分失败!"); + } + } + return new ResultEntity<>(HttpStatus.OK, "评分成功!"); + } + + /* 报告下载 + * @author xcj + * @Date 2023/12/1 + */ + @Override + public void downloadReport(String reportId, HttpServletResponse response) { + TrainingReport trainingReport = trainingReportMapper.selectByPrimaryKey(reportId); + Assert.isTrue(trainingReport != null && trainingReport.getUrl() != null, "报告不存在"); + fileUtil.download(response, trainingReport.getReportName(), trainingReport.getUrl()); + } + /* 按得分比较排序 * @author xcj diff --git a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/tea/TeaTopicManageServiceImpl.java b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/tea/TeaTopicManageServiceImpl.java new file mode 100644 index 0000000..05dc3fb --- /dev/null +++ b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/tea/TeaTopicManageServiceImpl.java @@ -0,0 +1,120 @@ +package com.sztzjy.fund_investment.service.serviceImpl.tea; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.sztzjy.fund_investment.entity.*; +import com.sztzjy.fund_investment.entity.dto.QuestionAnswerDto; +import com.sztzjy.fund_investment.mapper.FlowMapper; +import com.sztzjy.fund_investment.mapper.QuestionAnswerMapper; +import com.sztzjy.fund_investment.mapper.TopicsMapper; +import com.sztzjy.fund_investment.mapper.UserTableMapper; +import com.sztzjy.fund_investment.service.tea.TeaTopicManageService; +import com.sztzjy.fund_investment.util.PageUtil; +import com.sztzjy.fund_investment.util.ResultEntity; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author xcj + * @Date 2023/12/1 + */ +@Service +public class TeaTopicManageServiceImpl implements TeaTopicManageService { + + @Autowired + private TopicsMapper topicsMapper; + @Autowired + private QuestionAnswerMapper questionAnswerMapper; + @Autowired + private UserTableMapper userTableMapper; + @Autowired + private FlowMapper flowMapper; + + + @Override + public ResultEntity insertTopics(TopicsWithBLOBs topics) { + if (StringUtils.isNotBlank(topics.getTopicContent())) { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "题干不能为空!"); + } + if (StringUtils.isNotBlank(topics.getChoicesa()) || StringUtils.isNotBlank(topics.getChoicesb())) { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "选项不能为空!"); + } + if (StringUtils.isNotBlank(topics.getTopicType())) { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "题型不能为空!"); + } + if (StringUtils.isNotBlank(topics.getAnswer())) { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "答案不能为空!"); + } + if (topics.getScore() == null || topics.getScore() == 0) { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "分值不能为空!"); + } + topicsMapper.insert(topics); + return new ResultEntity<>(HttpStatus.OK, "新增成功!"); + } + + + /* 试题页面模糊查询/展示 + * @author xcj + * @Date 2023/12/1 + */ + @Override + public PageInfo getTopicsBySchoolId(Integer index, Integer size, String schoolId, String module, String topicContent) { + PageHelper.startPage(index, size); + TopicsExample topicsExample = new TopicsExample(); + TopicsExample.Criteria criteria = topicsExample.createCriteria(); + criteria.andSchoolIdEqualTo(schoolId).andModuleEqualTo(module); + if (!("").equals(topicContent) && topicContent != null) { + topicContent = "%" + topicContent + "%"; + criteria.andTopicIdEqualTo(topicContent); + } + List topicsWithBLOBs = topicsMapper.selectByExampleWithBLOBs(topicsExample); + return new PageInfo<>(topicsWithBLOBs); + } + + + /** 互动答疑查询展示 + * @author xcj + * @Date 2023/12/1 + */ + @Override + public PageInfo getQuestionAnswer(Integer index, Integer size, String schoolId, String className, String keyWord) { + QuestionAnswerExample questionAnswerExample = new QuestionAnswerExample(); + questionAnswerExample.createCriteria().andSchoolidEqualTo(schoolId); + List questionAnswers = questionAnswerMapper.selectByExample(questionAnswerExample); + UserTableExample userTableExample = new UserTableExample(); + UserTableExample.Criteria criteria = userTableExample.createCriteria(); + UserTableExample.Criteria or = userTableExample.createCriteria(); + criteria.andSchoolIdEqualTo(schoolId); + if (StringUtils.isNotBlank(className)){ + criteria.andClassNameEqualTo(className); + } + if (StringUtils.isNotBlank(keyWord)){ + criteria.andStudentIdEqualTo(keyWord); + or.andNameEqualTo(keyWord); + } + userTableExample.or(or); + List userTables = userTableMapper.selectByExample(userTableExample); + List list = new ArrayList<>(); + + for (UserTable userTable : userTables) { + Flow flow = flowMapper.selectByPrimaryKey(userTable.getUserid()); + String flowId = flow.getFlowId(); + for (QuestionAnswer questionAnswer : questionAnswers) { + if (questionAnswer.getFlowId().equals(flowId)) { + QuestionAnswerDto questionAnswerDto = new QuestionAnswerDto(); + BeanUtils.copyProperties(userTable, questionAnswerDto); + BeanUtils.copyProperties(questionAnswer, questionAnswerDto); + list.add(questionAnswerDto); + } + } + } + PageInfo pageInfo = PageUtil.pageHelper(list, index, size); + return pageInfo; + } +} diff --git a/src/main/java/com/sztzjy/fund_investment/service/tea/ClassScoreService.java b/src/main/java/com/sztzjy/fund_investment/service/tea/ClassScoreService.java index f4a1faa..02514e2 100644 --- a/src/main/java/com/sztzjy/fund_investment/service/tea/ClassScoreService.java +++ b/src/main/java/com/sztzjy/fund_investment/service/tea/ClassScoreService.java @@ -2,14 +2,15 @@ package com.sztzjy.fund_investment.service.tea; import com.github.pagehelper.PageInfo; import com.sztzjy.fund_investment.entity.TeaClassScore; -import com.sztzjy.fund_investment.entity.dto.TeaClassScoreDto; -import com.sztzjy.fund_investment.entity.dto.UserDto; +import com.sztzjy.fund_investment.entity.dto.*; import com.sztzjy.fund_investment.util.ResultEntity; +import io.swagger.models.auth.In; import org.springframework.http.HttpStatus; import javax.servlet.http.HttpServletResponse; import java.util.Date; import java.util.List; +import java.util.Map; /** * @Author xcj @@ -26,4 +27,14 @@ public interface ClassScoreService { ResultEntity autoScore(String schoolId); + PerformanceScoreDto getPerformanceScoreDto(String flowId); + + PerformanceTrainingScoreDto getStuTrainingScore(String performanceScoreId); + + FoundProjectDto getReportStringByFlowId(String flowId); + + ResultEntity updateScoreByFlowId(String flowId, Mapmap); + + void downloadReport(String reportId, HttpServletResponse response); + } diff --git a/src/main/java/com/sztzjy/fund_investment/service/tea/TeaTopicManageService.java b/src/main/java/com/sztzjy/fund_investment/service/tea/TeaTopicManageService.java new file mode 100644 index 0000000..9c834d9 --- /dev/null +++ b/src/main/java/com/sztzjy/fund_investment/service/tea/TeaTopicManageService.java @@ -0,0 +1,19 @@ +package com.sztzjy.fund_investment.service.tea; + +import com.github.pagehelper.PageInfo; +import com.sztzjy.fund_investment.entity.TopicsWithBLOBs; +import com.sztzjy.fund_investment.entity.dto.QuestionAnswerDto; +import com.sztzjy.fund_investment.util.ResultEntity; + +/** + * @Author xcj + * @Date 2023/12/1 + */ +public interface TeaTopicManageService { + ResultEntity insertTopics(TopicsWithBLOBs topics); + + PageInfo getTopicsBySchoolId(Integer index, Integer size,String schoolId, String module,String topicContent); + + PageInfo getQuestionAnswer(Integer index, Integer size,String schoolId, String className, String keyWord); + +} diff --git a/src/main/resources/mappers/FoundProjectMapper.xml b/src/main/resources/mappers/FoundProjectMapper.xml index 7736a6b..4a95c14 100644 --- a/src/main/resources/mappers/FoundProjectMapper.xml +++ b/src/main/resources/mappers/FoundProjectMapper.xml @@ -7,6 +7,8 @@ + + @@ -67,7 +69,8 @@ - flow_id, project_pool_id, found_project_conclusion, service_due_diligence, financial_due_diligence + flow_id, project_pool_id, found_project_conclusion, service_due_diligence, financial_due_diligence, + project_valuation_relative, project_valuation_absolute @@ -168,6 +185,12 @@ financial_due_diligence = #{record.financialDueDiligence,jdbcType=VARCHAR}, + + project_valuation_relative = #{record.projectValuationRelative,jdbcType=VARCHAR}, + + + project_valuation_absolute = #{record.projectValuationAbsolute,jdbcType=VARCHAR}, + @@ -179,7 +202,9 @@ project_pool_id = #{record.projectPoolId,jdbcType=VARCHAR}, found_project_conclusion = #{record.foundProjectConclusion,jdbcType=VARCHAR}, service_due_diligence = #{record.serviceDueDiligence,jdbcType=VARCHAR}, - financial_due_diligence = #{record.financialDueDiligence,jdbcType=VARCHAR} + financial_due_diligence = #{record.financialDueDiligence,jdbcType=VARCHAR}, + project_valuation_relative = #{record.projectValuationRelative,jdbcType=VARCHAR}, + project_valuation_absolute = #{record.projectValuationAbsolute,jdbcType=VARCHAR} @@ -199,6 +224,12 @@ financial_due_diligence = #{financialDueDiligence,jdbcType=VARCHAR}, + + project_valuation_relative = #{projectValuationRelative,jdbcType=VARCHAR}, + + + project_valuation_absolute = #{projectValuationAbsolute,jdbcType=VARCHAR}, + where flow_id = #{flowId,jdbcType=VARCHAR} @@ -207,7 +238,9 @@ set project_pool_id = #{projectPoolId,jdbcType=VARCHAR}, found_project_conclusion = #{foundProjectConclusion,jdbcType=VARCHAR}, service_due_diligence = #{serviceDueDiligence,jdbcType=VARCHAR}, - financial_due_diligence = #{financialDueDiligence,jdbcType=VARCHAR} + financial_due_diligence = #{financialDueDiligence,jdbcType=VARCHAR}, + project_valuation_relative = #{projectValuationRelative,jdbcType=VARCHAR}, + project_valuation_absolute = #{projectValuationAbsolute,jdbcType=VARCHAR} where flow_id = #{flowId,jdbcType=VARCHAR} \ No newline at end of file