From aa95b54fdc85ebe1d3c95eb8ee24f6ba0d9ea8f0 Mon Sep 17 00:00:00 2001
From: yz <3614508250@qq.com>
Date: Mon, 18 Mar 2024 16:29:27 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BE=88=E5=A4=9ABUg?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../config/security/TokenProvider.java        |   2 +-
 .../controller/FoundProjectController.java    | 105 ++++++--
 .../controller/IlabController.java            | 189 +++++++++++--
 .../ProjectDueDiligenceController.java        | 251 +++++++++++++-----
 .../ProjectValuationController.java           |  24 +-
 .../service/ISysProjectPoolService.java       |   6 +
 .../serviceImpl/SysEduDDMServiceImpl.java     |  14 +-
 .../serviceImpl/SysEduFCFFServiceImpl.java    |   2 +-
 .../SysProjectDueDiligenceServiceImpl.java    |  10 +-
 .../SysProjectPoolServiceImpl.java            |  21 ++
 .../SysProjectValuationServiceImpl.java       |  56 ++--
 .../tea/ClassScoreServiceImpl.java            |  10 +-
 12 files changed, 527 insertions(+), 163 deletions(-)

diff --git a/src/main/java/com/sztzjy/fund_investment/config/security/TokenProvider.java b/src/main/java/com/sztzjy/fund_investment/config/security/TokenProvider.java
index edda1cd..cd36afa 100644
--- a/src/main/java/com/sztzjy/fund_investment/config/security/TokenProvider.java
+++ b/src/main/java/com/sztzjy/fund_investment/config/security/TokenProvider.java
@@ -21,7 +21,7 @@ import java.util.List;
 public class TokenProvider {
 
     private final static String SECRET = "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAghgsx+OLLThi7c+/HgCaRla8n+/QLHt++uscoK22dMeaVa3WJvRb5C5qtHGzj9V74pI96JpxdWWCN3Zr1QtanQIDAQABAkB2fWRUD1jVMBVS+rPctLnPNPMKTRdzXGv0SC5D3tRfGZqdcfsmZg8hzBVndHxngmwZS73d+hPjofcdefDDnXq1AiEAz/r1AMF7fweN70mbKgBJuTja37puJMsH2Szwrvb5jlcCIQCgIaLZ5d9J7OomL0NwH8ghba/xgBEpKzErfGbFnTfeKwIgc8ptczFFV1DWZb2eJIEqinOr79l0jwl2YiQSD+cyw1sCIHqxCvv1Wx5jPgy/zeYNE+Q5DMP3Ii7u/x+Yk436JiI9AiEAio84hFm44YTUuV7YCYsbyvnCn/vtcAaqZlczbeHlP1I=";
-    private final static long EXP_TIME = 1000 * 60 * 60 * 2;
+    private final static long EXP_TIME = 1000 * 60 * 60 * 4;
 
     private final static String SECRET_ZHIYUN = "zy_wh_mnjy_fp76ckwuczzmb67w0a8x0";
 
diff --git a/src/main/java/com/sztzjy/fund_investment/controller/FoundProjectController.java b/src/main/java/com/sztzjy/fund_investment/controller/FoundProjectController.java
index abf21fc..c598b35 100644
--- a/src/main/java/com/sztzjy/fund_investment/controller/FoundProjectController.java
+++ b/src/main/java/com/sztzjy/fund_investment/controller/FoundProjectController.java
@@ -2,11 +2,11 @@ package com.sztzjy.fund_investment.controller;
 
 import com.github.pagehelper.PageInfo;
 import com.sztzjy.fund_investment.annotation.AnonymousAccess;
-import com.sztzjy.fund_investment.entity.FoundProject;
-import com.sztzjy.fund_investment.entity.PerformanceScore;
-import com.sztzjy.fund_investment.entity.ProjectPool;
+import com.sztzjy.fund_investment.entity.*;
 import com.sztzjy.fund_investment.mapper.FoundProjectMapper;
+import com.sztzjy.fund_investment.mapper.FundraisingMapper;
 import com.sztzjy.fund_investment.mapper.PerformanceScoreMapper;
+import com.sztzjy.fund_investment.mapper.ProjectPoolMapper;
 import com.sztzjy.fund_investment.service.ISysFoundProjectService;
 import com.sztzjy.fund_investment.service.ISysProjectPoolService;
 import com.sztzjy.fund_investment.service.PerformanceScoreService;
@@ -25,8 +25,10 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
+import java.math.BigDecimal;
 import java.nio.file.Paths;
 import java.util.Date;
+import java.util.List;
 
 //yz
 @RestController
@@ -45,14 +47,34 @@ public class FoundProjectController {
     PerformanceScoreService scoreService;
     @Autowired
     PerformanceScoreMapper performanceScoreMapper;
+    @Autowired
+    ProjectPoolMapper projectPoolMapper;
+    @Autowired
+    FundraisingMapper fundraisingMapper;
 
     @GetMapping("getProjectPoolList")
     @ApiOperation("寻找项目数据展示")
     @AnonymousAccess
     public ResultEntity getFundraising(@ApiParam("条数") @RequestParam Integer size,
                                        @ApiParam("页数") @RequestParam Integer index) {
-        PageInfo<ProjectPool> pageInfo=projectPoolService.selectList(size,index);
-        return new ResultEntity(HttpStatus.OK,"寻找项目数据展示成功",pageInfo);
+        PageInfo<ProjectPool> pageInfo = projectPoolService.selectList(size, index);
+        return new ResultEntity(HttpStatus.OK, "寻找项目数据展示成功", pageInfo);
+    }
+
+    @GetMapping("getCompanyNameList")
+    @ApiOperation("根据来源查询公司名集合")
+    @AnonymousAccess
+    public ResultEntity getCompanyNameList(@ApiParam("来源名称") @RequestParam String projectSource) {
+        List<String> CompanyNameList = projectPoolService.getCompanyNameList(projectSource);
+        return new ResultEntity(HttpStatus.OK, "根据来源查询公司名集合成功", CompanyNameList);
+    }
+
+    @GetMapping("getProjectPoolByCompanyName")
+    @ApiOperation("根据公司名查询项目信息")
+    @AnonymousAccess
+    public ResultEntity getProjectPoolByCompanyName(@ApiParam("公司名") @RequestParam String CompanyName) {
+        ProjectPool projectPool = projectPoolService.getProjectPoolByCompanyName(CompanyName);
+        return new ResultEntity(HttpStatus.OK, "根据公司名查询项目信息成功", projectPool);
     }
 
 
@@ -60,7 +82,7 @@ public class FoundProjectController {
     @ApiOperation("BP按钮")
     @AnonymousAccess
     public ResponseEntity<FileSystemResource> getFundraising(@ApiParam("企业简称") @RequestParam String companyName, HttpServletResponse response) {
-        String PDFPath = filePath +"/bpbdf/商业计划书-"+ companyName+".pdf";
+        String PDFPath = filePath + "/bpbdf/商业计划书-" + companyName + ".pdf";
         File videoFile = new File(PDFPath);
         if (videoFile.exists()) {
             Paths.get(PDFPath);
@@ -76,44 +98,77 @@ public class FoundProjectController {
     @PostMapping("projectApproval")
     @ApiOperation("立项")
     @AnonymousAccess
-    public ResultEntity projectApproval(@ApiParam("传递flow_id,project_pool_id,found_project_conclusion") @RequestBody FoundProject foundProject){
-        if(StringUtils.isBlank(foundProject.getFlowId())){
-            return new ResultEntity(HttpStatus.BAD_REQUEST,"流程ID未上传");
+    public ResultEntity projectApproval(@ApiParam("传递flow_id,project_pool_id,found_project_conclusion") @RequestBody FoundProject foundProject) {
+        if (StringUtils.isBlank(foundProject.getFlowId())) {
+            return new ResultEntity(HttpStatus.BAD_REQUEST, "流程ID未上传");
         }
-        if(StringUtils.isBlank(foundProject.getProjectPoolId())){
-            return new ResultEntity(HttpStatus.BAD_REQUEST,"未选择项目");
+        if (StringUtils.isBlank(foundProject.getProjectPoolId())) {
+            return new ResultEntity(HttpStatus.BAD_REQUEST, "未选择项目");
         }
-        if(StringUtils.isBlank(foundProject.getFoundProjectConclusion())){
-            return new ResultEntity(HttpStatus.BAD_REQUEST,"未填写选择理由");
+        if (StringUtils.isBlank(foundProject.getFoundProjectConclusion())) {
+            return new ResultEntity(HttpStatus.BAD_REQUEST, "未填写选择理由");
         }
         FoundProject foundProject1 = foundProjectMapper.selectByPrimaryKey(foundProject.getFlowId());
-        if(foundProject1!=null){
-            return new ResultEntity(HttpStatus.BAD_REQUEST,"本次实训已立项过");
+        if (foundProject1 != null) {
+            if("lxyzsb".equals(foundProject1.getFoundProjectConclusion()) || "lxyzsb2".equals(foundProject1.getFoundProjectConclusion())){
+            }else {
+                return new ResultEntity(HttpStatus.BAD_REQUEST, "本次实训已立项过");
+            }
         }
-        foundProjectMapper.insert(foundProject);
-        if(foundProject.getFoundProjectConclusion()!=null){
-            scoreService.calculateScoreByModule("projectSearchReportScore",2,foundProject.getFlowId());
-        }else {
-            scoreService.calculateScoreByModule("projectSearchReportScore",0,foundProject.getFlowId());
+        //验证募集的资金要大于等于估值的5%
+        //先根据项目池ID查询立项中的估值  再根据flowid 获取资金募资表中的基金募资金额 做对比
+        String projectPoolId = foundProject.getProjectPoolId();
+        String latestValuation = projectPoolMapper.selectByPrimaryKey(projectPoolId).getLatestValuation(); //估值
+        FundraisingExample example = new FundraisingExample();
+        example.createCriteria().andFlowIdEqualTo(foundProject.getFlowId());
+        List<Fundraising> fundraisings = fundraisingMapper.selectByExample(example);
+        if (fundraisings.isEmpty()) {
+            return new ResultEntity(HttpStatus.BAD_REQUEST, "立项失败,募资基金不存在");
+        } else {
+            BigDecimal latestValuationBigDecimal = new BigDecimal(latestValuation);
+            BigDecimal fundraisingAmount = fundraisings.get(0).getFundraisingAmount(); //基金募资金额
+            boolean bool = fundraisingAmount.compareTo(latestValuationBigDecimal.multiply(new BigDecimal("0.05"))) >= 0;
+            if (!bool) {
+                if(foundProject1==null){
+                    foundProject.setFoundProjectConclusion("lxyzsb"); //立项验证失败 记录第一次立项
+                    foundProjectMapper.insert(foundProject);
+                    return new ResultEntity(HttpStatus.BAD_REQUEST, "立项失败1,募资基金必须大于等于估值的5%");
+                }else {
+                    foundProject.setFoundProjectConclusion("lxyzsb2"); //立项验证失败 记录第二次立项
+                    foundProjectMapper.insert(foundProject);
+                    return new ResultEntity(HttpStatus.BAD_REQUEST, "立项失败2,募资基金必须大于等于估值的5%");
+                }
+            }
         }
-        scoreService.calculateScoreByModule("projectSearchScore",3,foundProject.getFlowId());
+
+//        scoreService.calculateScoreByModule("projectSearchReportScore", 2, foundProject.getFlowId());
+        if (foundProject1 == null) {  //foundProject1 为数据库中的数据  foundProject为前端传递的数据
+            scoreService.calculateScoreByModule("projectSearchScore", 3, foundProject.getFlowId());
+        } else {
+            if("lxyzsb".equals(foundProject1.getFoundProjectConclusion())){
+                scoreService.calculateScoreByModule("projectSearchScore", 1, foundProject.getFlowId());
+            }else {
+                scoreService.calculateScoreByModule("projectSearchScore", 0, foundProject.getFlowId());
+            }
+        }
+        foundProjectMapper.insert(foundProject);
         PerformanceScore performanceScore = scoreService.getByFlowId(foundProject.getFlowId());
         performanceScore.setProjectSearchTime(new Date());
         performanceScoreMapper.updateByPrimaryKey(performanceScore);
-        return new ResultEntity(HttpStatus.OK,"立项成功");
+        return new ResultEntity(HttpStatus.OK, "立项成功");
     }
 
 
     @GetMapping("getProjectApproval")
     @ApiOperation("立项回显")
     @AnonymousAccess
-    public ResultEntity getProjectApproval(@ApiParam("流程ID") @RequestParam String flowId){
-        FoundProject foundProject=foundProjectService.selectByFlowId(flowId);
+    public ResultEntity getProjectApproval(@ApiParam("流程ID") @RequestParam String flowId) {
+        FoundProject foundProject = foundProjectService.selectByFlowId(flowId);
         foundProject.setFinancialDueDiligence(null);
         foundProject.setServiceDueDiligence(null);
         foundProject.setProjectValuationRelative(null);
         foundProject.setProjectValuationAbsolute(null);
-        return new ResultEntity(HttpStatus.OK,"立项回显成功",foundProject);
+        return new ResultEntity(HttpStatus.OK, "立项回显成功", foundProject);
     }
 
 
diff --git a/src/main/java/com/sztzjy/fund_investment/controller/IlabController.java b/src/main/java/com/sztzjy/fund_investment/controller/IlabController.java
index 8774d8b..9001884 100644
--- a/src/main/java/com/sztzjy/fund_investment/controller/IlabController.java
+++ b/src/main/java/com/sztzjy/fund_investment/controller/IlabController.java
@@ -4,6 +4,8 @@ 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.Api;
+import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpPost;
@@ -12,6 +14,7 @@ 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.beans.factory.annotation.Value;
 import org.springframework.util.DigestUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -25,13 +28,19 @@ import java.net.URL;
 import java.util.Date;
 import java.util.Map;
 import java.util.Scanner;
+import java.util.UUID;
 
 
 @RestController
 @RequestMapping("/stu/ilabController")
+@Api(tags = "学生端--国家虚拟仿真接口")
 public class IlabController {
     @Autowired
     IIlabService iIlabService;
+    @Value("${file.path}")
+    private String filePath;
+
+
     String appid = "107223";
     String secret = "5F2pfvRDXq5ybF4imPA02TJZfaYA1hPXTTvPjtwk+OE=";
 
@@ -46,27 +55,160 @@ public class IlabController {
 
     @PostMapping("dataUpload")
     @AnonymousAccess
-    public void dataUpload(@ApiParam("access_token") @RequestParam String accessToken) throws IOException {
-        accessToken = URLEncoder.encode(accessToken);
+    @ApiOperation("数据上传+实验报告上传")
+    public void dataUpload(@ApiParam("access_token") @RequestParam String accessToken,
+                           @ApiParam("un") @RequestParam String un,
+                           @ApiParam("userId") @RequestParam String userId) throws IOException {
+        accessToken = URLEncoder.encode(accessToken, "UTF-8");
+        String accessTokenRepalce = accessToken.replaceAll("\\+", "%2B");
+//        long nowTime = System.currentTimeMillis();
+        long endTime = System.currentTimeMillis()-10000;
+        long startTime = endTime- 1000 * 100;
         //定义发送数据
         String requestBody = "{\n" +
-                "    \"username\": \"mj_993115\",\n" +
+                "    \"username\": \""+un+"\",\n" +
                 "    \"title\": \"股权基金投资虚拟仿真实验\",\n" +
                 "    \"status\": 1,\n" +
                 "    \"score\": 100,\n" +
-                "    \"startTime\": 1704252457000,\n" +
-                "    \"endTime\": 1704252467000,\n" +
+                "    \"startTime\": "+startTime+",\n" +
+                "    \"endTime\": "+endTime+",\n" +
                 "    \"timeUsed\": 100,\n" +
                 "    \"appid\": \"107223\",\n" +
-                "    \"originId\": \"1\",\n" +
+                "    \"originId\": \""+userId+"\",\n" +
                 "    \"steps\": [\n" +
                 "        {\n" +
                 "            \"seq\": 1,\n" +
                 "            \"title\": \"实验步骤1\",\n" +
-                "            \"startTime\": 1704252457000,\n" +
-                "            \"endTime\": 1704252467000,\n" +
+                "            \"startTime\": "+startTime+",\n" +
+                "            \"endTime\": "+endTime+",\n" +
                 "            \"timeUsed\": 100,\n" +
-                "            \"expectTime\": 100,\n" +
+                "            \"expectTime\": 2,\n" +
+                "            \"maxScore\": 10,\n" +
+                "            \"score\": 10,\n" +
+                "            \"repeatCount\": 1,\n" +
+                "            \"evaluation\": \"优\",\n" +
+                "            \"scoringModel\": \"赋分模型\",\n" +
+                "            \"remarks\": \"备注\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"seq\": 2,\n" +
+                "            \"title\": \"实验步骤2\",\n" +
+                "            \"startTime\": "+startTime+",\n" +
+                "            \"endTime\": "+endTime+",\n" +
+                "            \"timeUsed\": 100,\n" +
+                "            \"expectTime\": 2,\n" +
+                "            \"maxScore\": 10,\n" +
+                "            \"score\": 10,\n" +
+                "            \"repeatCount\": 1,\n" +
+                "            \"evaluation\": \"优\",\n" +
+                "            \"scoringModel\": \"赋分模型\",\n" +
+                "            \"remarks\": \"备注\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"seq\": 3,\n" +
+                "            \"title\": \"实验步骤3\",\n" +
+                "            \"startTime\": "+startTime+",\n" +
+                "            \"endTime\": "+endTime+",\n" +
+                "            \"timeUsed\": 100,\n" +
+                "            \"expectTime\": 2,\n" +
+                "            \"maxScore\": 10,\n" +
+                "            \"score\": 10,\n" +
+                "            \"repeatCount\": 1,\n" +
+                "            \"evaluation\": \"优\",\n" +
+                "            \"scoringModel\": \"赋分模型\",\n" +
+                "            \"remarks\": \"备注\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"seq\": 4,\n" +
+                "            \"title\": \"实验步骤4\",\n" +
+                "            \"startTime\": "+startTime+",\n" +
+                "            \"endTime\": "+endTime+",\n" +
+                "            \"timeUsed\": 100,\n" +
+                "            \"expectTime\": 2,\n" +
+                "            \"maxScore\": 10,\n" +
+                "            \"score\": 10,\n" +
+                "            \"repeatCount\": 1,\n" +
+                "            \"evaluation\": \"优\",\n" +
+                "            \"scoringModel\": \"赋分模型\",\n" +
+                "            \"remarks\": \"备注\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"seq\": 5,\n" +
+                "            \"title\": \"实验步骤5\",\n" +
+                "            \"startTime\": "+startTime+",\n" +
+                "            \"endTime\": "+endTime+",\n" +
+                "            \"timeUsed\": 100,\n" +
+                "            \"expectTime\": 2,\n" +
+                "            \"maxScore\": 10,\n" +
+                "            \"score\": 10,\n" +
+                "            \"repeatCount\": 1,\n" +
+                "            \"evaluation\": \"优\",\n" +
+                "            \"scoringModel\": \"赋分模型\",\n" +
+                "            \"remarks\": \"备注\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"seq\": 6,\n" +
+                "            \"title\": \"实验步骤6\",\n" +
+                "            \"startTime\": "+startTime+",\n" +
+                "            \"endTime\": "+endTime+",\n" +
+                "            \"timeUsed\": 100,\n" +
+                "            \"expectTime\": 2,\n" +
+                "            \"maxScore\": 10,\n" +
+                "            \"score\": 10,\n" +
+                "            \"repeatCount\": 1,\n" +
+                "            \"evaluation\": \"优\",\n" +
+                "            \"scoringModel\": \"赋分模型\",\n" +
+                "            \"remarks\": \"备注\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"seq\": 7,\n" +
+                "            \"title\": \"实验步骤7\",\n" +
+                "            \"startTime\": "+startTime+",\n" +
+                "            \"endTime\": "+endTime+",\n" +
+                "            \"timeUsed\": 100,\n" +
+                "            \"expectTime\": 2,\n" +
+                "            \"maxScore\": 10,\n" +
+                "            \"score\": 10,\n" +
+                "            \"repeatCount\": 1,\n" +
+                "            \"evaluation\": \"优\",\n" +
+                "            \"scoringModel\": \"赋分模型\",\n" +
+                "            \"remarks\": \"备注\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"seq\": 8,\n" +
+                "            \"title\": \"实验步骤8\",\n" +
+                "            \"startTime\": "+startTime+",\n" +
+                "            \"endTime\": "+endTime+",\n" +
+                "            \"timeUsed\": 100,\n" +
+                "            \"expectTime\": 2,\n" +
+                "            \"maxScore\": 10,\n" +
+                "            \"score\": 10,\n" +
+                "            \"repeatCount\": 1,\n" +
+                "            \"evaluation\": \"优\",\n" +
+                "            \"scoringModel\": \"赋分模型\",\n" +
+                "            \"remarks\": \"备注\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"seq\": 9,\n" +
+                "            \"title\": \"实验步骤9\",\n" +
+                "            \"startTime\": "+startTime+",\n" +
+                "            \"endTime\": "+endTime+",\n" +
+                "            \"timeUsed\": 100,\n" +
+                "            \"expectTime\": 2,\n" +
+                "            \"maxScore\": 10,\n" +
+                "            \"score\": 10,\n" +
+                "            \"repeatCount\": 1,\n" +
+                "            \"evaluation\": \"优\",\n" +
+                "            \"scoringModel\": \"赋分模型\",\n" +
+                "            \"remarks\": \"备注\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"seq\": 10,\n" +
+                "            \"title\": \"实验步骤10\",\n" +
+                "            \"startTime\": "+startTime+",\n" +
+                "            \"endTime\": "+endTime+",\n" +
+                "            \"timeUsed\": 100,\n" +
+                "            \"expectTime\": 2,\n" +
                 "            \"maxScore\": 10,\n" +
                 "            \"score\": 10,\n" +
                 "            \"repeatCount\": 1,\n" +
@@ -79,8 +221,7 @@ public class IlabController {
                 "\n";
         //定义接收数据
         JSONObject result = new JSONObject();
-
-        String url = "https://www.ilab-x.com/open/api/v2/data_upload?access_token=rnVop9mKUfzuJm656m%2BTLLGy2RIx7JFUQ5xnGJ18xSC3P5yQizr5gVmnUpGiWbNQIVj9z2AnFOXXA3L0LUKaRuuYBu5cHJeL1AHvjbxanwQ%3D";
+        String url = "https://www.ilab-x.com/open/api/v2/data_upload?access_token="+accessTokenRepalce;
         HttpPost httpPost = new HttpPost(url);
         CloseableHttpClient client = HttpClients.createDefault();
         //请求参数转JOSN字符串
@@ -92,6 +233,7 @@ public class IlabController {
             HttpResponse response = client.execute(httpPost);
             if (response.getStatusLine().getStatusCode() == 200) {
                 result = JSON.parseObject(EntityUtils.toString(response.getEntity(), "UTF-8"));
+                System.out.println(result.toString());
             }
         } catch (IOException e) {
             e.printStackTrace();
@@ -103,16 +245,32 @@ public class IlabController {
         } catch (Exception e) {
             System.out.println(e.getMessage());
         }
+
+        try {
+            Thread.sleep(5);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        attachmentUpload(accessTokenRepalce,userId);
     }
 
     //实验报告上传
     @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";
+    public void attachmentUpload(@ApiParam("access_token") @RequestParam String accessToken,
+                                 @ApiParam("userId")@RequestParam String userId) throws IOException {
+//        accessToken = URLEncoder.encode(accessToken, "UTF-8");
+//        String accessTokenRepalce = accessToken.replaceAll("\\+", "%2B");
+        String url = "https://www.ilab-x.com/open/api/v2/attachment_upload" +
+                "?access_token=" + accessToken +
+                "&appid=" + appid +
+                "&originId=" + userId+
+                "&filename=abc.pdf&title=%E6%B5%8B%E8%AF%95%E5%AE%9E%E9%AA%8C%E6%8A%A5%E5%91%8A";
 
-        File file = new File(filePath);
+        String pdfFilePath = filePath +"/abc.pdf";
+//        String pdfFilePath = "C:\\Users\\86132\\Desktop\\abc.pdf";
+
+        File file = new File(pdfFilePath);
         URL apiUrl = new URL(url);
         HttpURLConnection connection = (HttpURLConnection) apiUrl.openConnection();
 
@@ -159,4 +317,5 @@ public class IlabController {
 
 
 
+
 }
diff --git a/src/main/java/com/sztzjy/fund_investment/controller/ProjectDueDiligenceController.java b/src/main/java/com/sztzjy/fund_investment/controller/ProjectDueDiligenceController.java
index 2098a29..4d5638b 100644
--- a/src/main/java/com/sztzjy/fund_investment/controller/ProjectDueDiligenceController.java
+++ b/src/main/java/com/sztzjy/fund_investment/controller/ProjectDueDiligenceController.java
@@ -198,7 +198,7 @@ public class ProjectDueDiligenceController {
             return new ResultEntity(HttpStatus.BAD_REQUEST, "业务尽调结论为空");
         }
         projectDueDiligenceService.updateServiceDueDiligence(foundProject);
-        scoreService.calculateScoreByModule("projectDueDiligenceBusinessReportScore", 2, foundProject.getFlowId());
+//        scoreService.calculateScoreByModule("projectDueDiligenceBusinessReportScore", 2, foundProject.getFlowId());
         return new ResultEntity(HttpStatus.OK, "业务尽调结论保存成功");
     }
 
@@ -346,7 +346,7 @@ public class ProjectDueDiligenceController {
             return new ResultEntity(HttpStatus.BAD_REQUEST, "财务尽调结论为空");
         }
         projectDueDiligenceService.updateServiceDueDiligence(foundProject);
-        scoreService.calculateScoreByModule("projectDueDiligenceFinanceReportScore", 2, foundProject.getFlowId());
+//        scoreService.calculateScoreByModule("projectDueDiligenceFinanceReportScore", 2, foundProject.getFlowId());
         PerformanceScore performanceScore = scoreService.getByFlowId(foundProject.getFlowId());
         performanceScore.setProjectDueDiligenceTime(new Date());
         performanceScoreMapper.updateByPrimaryKey(performanceScore);
@@ -491,13 +491,22 @@ public class ProjectDueDiligenceController {
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("司法风险:", 0, 1.5f));
-        ProJudicialRisk proJudicialRisk = projectDueDiligenceService.getProJudicialRiskListByFlowId(flowId).get(0);
+        List<ProJudicialRisk> proJudicialRiskList = projectDueDiligenceService.getProJudicialRiskListByFlowId(flowId);
         TreeMap<String, String> treeMap2 = new TreeMap<>();
-        treeMap2.put("开庭日期", proJudicialRisk.getLawfulDay());
-        treeMap2.put("案号", proJudicialRisk.getCaseCode());
-        treeMap2.put("案由", proJudicialRisk.getCause());
-        treeMap2.put("公诉人/原告", proJudicialRisk.getPlaintiff());
-        treeMap2.put("被告人", proJudicialRisk.getDefendant());
+        if(!proJudicialRiskList.isEmpty()){
+            ProJudicialRisk proJudicialRisk = proJudicialRiskList.get(0);
+            treeMap2.put("开庭日期", proJudicialRisk.getLawfulDay());
+            treeMap2.put("案号", proJudicialRisk.getCaseCode());
+            treeMap2.put("案由", proJudicialRisk.getCause());
+            treeMap2.put("公诉人/原告", proJudicialRisk.getPlaintiff());
+            treeMap2.put("被告人", proJudicialRisk.getDefendant());
+        }else {
+            treeMap2.put("开庭日期", "");
+            treeMap2.put("案号", "");
+            treeMap2.put("案由", "");
+            treeMap2.put("公诉人/原告", "");
+            treeMap2.put("被告人", "");
+        }
         PdfPTable table2 = returnPdfPTable(treeMap2);
         document.add(table2);
 
@@ -507,14 +516,24 @@ public class ProjectDueDiligenceController {
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("经营风险:", 0, 1.5f));
-        ProBusinessRisk proBusinessRisk = projectDueDiligenceService.getProBusinessRiskListByFlowId(flowId).get(0);
+        List<ProBusinessRisk> proBusinessRiskListByFlowId = projectDueDiligenceService.getProBusinessRiskListByFlowId(flowId);
         TreeMap<String, String> treeMap3 = new TreeMap<>();
-        treeMap3.put("列入日期 ", proBusinessRisk.getIncludedDate());
-        treeMap3.put("列入经营异常名录原因", proBusinessRisk.getIncludedCause());
-        treeMap3.put("列入机关 ", proBusinessRisk.getIncludedOrganization());
-        treeMap3.put("移出日期", proBusinessRisk.getRemovedDate());
-        treeMap3.put("移出经营异常名录原因", proBusinessRisk.getRemovedCause());
-        treeMap3.put("移出决定机关 ", proBusinessRisk.getRemovedOrganization());
+        if (!proBusinessRiskListByFlowId.isEmpty()){
+            ProBusinessRisk proBusinessRisk=proBusinessRiskListByFlowId.get(0);
+            treeMap3.put("列入日期 ", proBusinessRisk.getIncludedDate());
+            treeMap3.put("列入经营异常名录原因", proBusinessRisk.getIncludedCause());
+            treeMap3.put("列入机关 ", proBusinessRisk.getIncludedOrganization());
+            treeMap3.put("移出日期", proBusinessRisk.getRemovedDate());
+            treeMap3.put("移出经营异常名录原因", proBusinessRisk.getRemovedCause());
+            treeMap3.put("移出决定机关 ", proBusinessRisk.getRemovedOrganization());
+        }else {
+            treeMap3.put("列入日期 ", "");
+            treeMap3.put("列入经营异常名录原因", "");
+            treeMap3.put("列入机关 ", "");
+            treeMap3.put("移出日期","");
+            treeMap3.put("移出经营异常名录原因", "");
+            treeMap3.put("移出决定机关 ", "");
+        }
         PdfPTable table3 = returnPdfPTable(treeMap3);
         document.add(table3);
 
@@ -524,35 +543,63 @@ public class ProjectDueDiligenceController {
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("核心团队:", 0, 1.5f));
-        ProCoreTeam proCoreTeam = projectDueDiligenceService.getProCoreTeamListByFlowId(flowId).get(0);
+        List<ProCoreTeam> proCoreTeamListByFlowId = projectDueDiligenceService.getProCoreTeamListByFlowId(flowId);
         TreeMap<String, String> treeMap4 = new TreeMap<>();
-        treeMap4.put("姓名", proCoreTeam.getName());
-        treeMap4.put("职位", proCoreTeam.getDuty());
-        treeMap4.put("简介", proCoreTeam.getIntroduction());
+        if (!proCoreTeamListByFlowId.isEmpty()){
+            ProCoreTeam proCoreTeam = proCoreTeamListByFlowId.get(0);
+            treeMap4.put("姓名", proCoreTeam.getName());
+            treeMap4.put("职位", proCoreTeam.getDuty());
+            treeMap4.put("简介", proCoreTeam.getIntroduction());
+        }else {
+            treeMap4.put("姓名", "");
+            treeMap4.put("职位", "");
+            treeMap4.put("简介", "");
+        }
+
         PdfPTable table4 = returnPdfPTable(treeMap4);
         document.add(table4);
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("核心业务:", 0, 1.5f));
-        ProCoreBusiness proCoreBusiness = projectDueDiligenceService.getProCoreBusinessListByFlowId(flowId).get(0);
         TreeMap<String, String> treeMap42 = new TreeMap<>();
-        treeMap42.put("产品名称", proCoreBusiness.getProductnameName());
-        treeMap42.put("行业", proCoreBusiness.getIndustry());
-        treeMap42.put("产品介绍", proCoreBusiness.getProductIntroduction());
+        List<ProCoreBusiness> proCoreBusinessListByFlowId = projectDueDiligenceService.getProCoreBusinessListByFlowId(flowId);
+        if(!proCoreBusinessListByFlowId.isEmpty()){
+            ProCoreBusiness proCoreBusiness = proCoreBusinessListByFlowId.get(0);
+            treeMap42.put("产品名称", proCoreBusiness.getProductnameName());
+            treeMap42.put("行业", proCoreBusiness.getIndustry());
+            treeMap42.put("产品介绍", proCoreBusiness.getProductIntroduction());
+        }else {
+            treeMap42.put("产品名称", "");
+            treeMap42.put("行业", "");
+            treeMap42.put("产品介绍", "");
+        }
+
         PdfPTable table42 = returnPdfPTable(treeMap42);
         document.add(table42);
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("相关竞品:", 0, 1.5f));
-        ProCoreCompPro proCoreCompPro = projectDueDiligenceService.getProCoreCompProListByFlowId(flowId).get(0);
+        List<ProCoreCompPro> proCoreCompProListByFlowId = projectDueDiligenceService.getProCoreCompProListByFlowId(flowId);
         TreeMap<String, String> treeMap43 = new TreeMap<>();
-        treeMap43.put("竞品名称", proCoreCompPro.getCompProName());
-        treeMap43.put("地区", proCoreCompPro.getIndustry());
-        treeMap43.put("当前融资轮次", proCoreCompPro.getArea());
-        treeMap43.put("行业", proCoreCompPro.getIndustry());
-        treeMap43.put("业务", proCoreCompPro.getBusiness());
-        treeMap43.put("成立时间", proCoreCompPro.getCreateDate());
-        treeMap43.put("估值", proCoreCompPro.getValuation());
+        if(!proCoreCompProListByFlowId.isEmpty()){
+            ProCoreCompPro proCoreCompPro = proCoreCompProListByFlowId.get(0);
+            treeMap43.put("竞品名称", proCoreCompPro.getCompProName());
+            treeMap43.put("地区", proCoreCompPro.getIndustry());
+            treeMap43.put("当前融资轮次", proCoreCompPro.getArea());
+            treeMap43.put("行业", proCoreCompPro.getIndustry());
+            treeMap43.put("业务", proCoreCompPro.getBusiness());
+            treeMap43.put("成立时间", proCoreCompPro.getCreateDate());
+            treeMap43.put("估值", proCoreCompPro.getValuation());
+        }else {
+            treeMap43.put("竞品名称", "");
+            treeMap43.put("地区", "");
+            treeMap43.put("当前融资轮次", "");
+            treeMap43.put("行业", "");
+            treeMap43.put("业务", "");
+            treeMap43.put("成立时间", "");
+            treeMap43.put("估值", "");
+        }
+
         PdfPTable table43 = returnPdfPTable(treeMap43);
         document.add(table43);
 
@@ -563,45 +610,81 @@ public class ProjectDueDiligenceController {
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("公司招聘:", 0, 1.5f));
-        ProManaSituRecruit proManaSituRecruit = projectDueDiligenceService.getProManaSituRecruitListByFlowId(flowId).get(0);
+        List<ProManaSituRecruit> proManaSituRecruitListByFlowId = projectDueDiligenceService.getProManaSituRecruitListByFlowId(flowId);
         TreeMap<String, String> treeMap51 = new TreeMap<>();
-        treeMap51.put("发布日期", proManaSituRecruit.getReleaseDate());
-        treeMap51.put("招聘职位", proManaSituRecruit.getDuty());
-        treeMap51.put("月薪", proManaSituRecruit.getSalary());
-        treeMap51.put("学历", proManaSituRecruit.getDegrees());
-        treeMap51.put("工作经验", proManaSituRecruit.getExperience());
-        treeMap51.put("地区", proManaSituRecruit.getArea());
+        if(!proManaSituRecruitListByFlowId.isEmpty()){
+            ProManaSituRecruit proManaSituRecruit = proManaSituRecruitListByFlowId.get(0);
+            treeMap51.put("发布日期", proManaSituRecruit.getReleaseDate());
+            treeMap51.put("招聘职位", proManaSituRecruit.getDuty());
+            treeMap51.put("月薪", proManaSituRecruit.getSalary());
+            treeMap51.put("学历", proManaSituRecruit.getDegrees());
+            treeMap51.put("工作经验", proManaSituRecruit.getExperience());
+            treeMap51.put("地区", proManaSituRecruit.getArea());
+        }else {
+            treeMap51.put("发布日期", "");
+            treeMap51.put("招聘职位", "");
+            treeMap51.put("月薪", "");
+            treeMap51.put("学历", "");
+            treeMap51.put("工作经验", "");
+            treeMap51.put("地区", "");
+        }
+
         PdfPTable table51 = returnPdfPTable(treeMap51);
         document.add(table51);
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("抽查检查:", 0, 1.5f));
-        ProManaSituCheck proManaSituCheck = projectDueDiligenceService.getProManaSituCheckListByFlowId(flowId).get(0);
+        List<ProManaSituCheck> proManaSituCheckListByFlowId = projectDueDiligenceService.getProManaSituCheckListByFlowId(flowId);
         TreeMap<String, String> treeMap52 = new TreeMap<>();
-        treeMap52.put("日期", proManaSituCheck.getCheckDate());
-        treeMap52.put("类型", proManaSituCheck.getCheckType());
-        treeMap52.put("结果", proManaSituCheck.getConsequence());
-        treeMap52.put("检查实施机关", proManaSituCheck.getOrganization());
+        if(!proManaSituCheckListByFlowId.isEmpty()){
+            ProManaSituCheck proManaSituCheck = proManaSituCheckListByFlowId.get(0);
+            treeMap52.put("日期", proManaSituCheck.getCheckDate());
+            treeMap52.put("类型", proManaSituCheck.getCheckType());
+            treeMap52.put("结果", proManaSituCheck.getConsequence());
+            treeMap52.put("检查实施机关", proManaSituCheck.getOrganization());
+        }else {
+            treeMap52.put("日期", "");
+            treeMap52.put("类型", "");
+            treeMap52.put("结果", "");
+            treeMap52.put("检查实施机关", "");
+        }
+
         PdfPTable table52 = returnPdfPTable(treeMap52);
         document.add(table52);
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("行政许可:", 0, 1.5f));
-        ProManaSituLicense proManaSituLicense = projectDueDiligenceService.getProManaSituLicenseListByFlowId(flowId).get(0);
+        List<ProManaSituLicense> proManaSituLicenseListByFlowId = projectDueDiligenceService.getProManaSituLicenseListByFlowId(flowId);
         TreeMap<String, String> treeMap53 = new TreeMap<>();
-        treeMap53.put("行政许可文书号", proManaSituLicense.getWrittenDecisionNum());
-        treeMap53.put("许可决定机关", proManaSituLicense.getOrganization());
-        treeMap53.put("许可决定日期", proManaSituLicense.getLicenseDate());
+        if(!proManaSituLicenseListByFlowId.isEmpty()){
+            ProManaSituLicense proManaSituLicense = proManaSituLicenseListByFlowId.get(0);
+            treeMap53.put("行政许可文书号", proManaSituLicense.getWrittenDecisionNum());
+            treeMap53.put("许可决定机关", proManaSituLicense.getOrganization());
+            treeMap53.put("许可决定日期", proManaSituLicense.getLicenseDate());
+        }else {
+            treeMap53.put("行政许可文书号", "");
+            treeMap53.put("许可决定机关", "");
+            treeMap53.put("许可决定日期", "");
+        }
+
         PdfPTable table53 = returnPdfPTable(treeMap53);
         document.add(table53);
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("招投标:", 0, 1.5f));
-        ProManaSituTenderingBidding proManaSituTenderingBidding = projectDueDiligenceService.getProManaSituTenderingBiddingListByFlowId(flowId).get(0);
+        List<ProManaSituTenderingBidding> proManaSituTenderingBiddingListByFlowId = projectDueDiligenceService.getProManaSituTenderingBiddingListByFlowId(flowId);
         TreeMap<String, String> treeMap54 = new TreeMap<>();
-        treeMap54.put("发布日期", proManaSituTenderingBidding.getReleaseDate());
-        treeMap54.put("标题", proManaSituTenderingBidding.getTitle());
-        treeMap54.put("采购人", proManaSituTenderingBidding.getPurchaser());
+        if(!proManaSituTenderingBiddingListByFlowId.isEmpty()){
+            ProManaSituTenderingBidding proManaSituTenderingBidding = proManaSituTenderingBiddingListByFlowId.get(0);
+            treeMap54.put("发布日期", proManaSituTenderingBidding.getReleaseDate());
+            treeMap54.put("标题", proManaSituTenderingBidding.getTitle());
+            treeMap54.put("采购人", proManaSituTenderingBidding.getPurchaser());
+        }else {
+            treeMap54.put("发布日期", "");
+            treeMap54.put("标题", "");
+            treeMap54.put("采购人", "");
+        }
+
         PdfPTable table54 = returnPdfPTable(treeMap54);
         document.add(table54);
 
@@ -611,24 +694,43 @@ public class ProjectDueDiligenceController {
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("专利信息:", 0, 1.5f));
-        ProIntelPropertyPatentinfo proIntelPropertyPatentinfo = projectDueDiligenceService.getProIntelPropertyPatentInfoListByFlowId(flowId).get(0);
+        List<ProIntelPropertyPatentinfo> proIntelPropertyPatentInfoListByFlowId = projectDueDiligenceService.getProIntelPropertyPatentInfoListByFlowId(flowId);
         TreeMap<String, String> treeMap61 = new TreeMap<>();
-        treeMap61.put("申请公布日", proIntelPropertyPatentinfo.getPublishDate());
-        treeMap61.put("专利名称", proIntelPropertyPatentinfo.getPatentName());
-        treeMap61.put("申请号", proIntelPropertyPatentinfo.getApplicationNum());
-        treeMap61.put("申请公布号", proIntelPropertyPatentinfo.getApplicationPubNum());
-        treeMap61.put("专利类型", proIntelPropertyPatentinfo.getPatentType());
+        if(!proIntelPropertyPatentInfoListByFlowId.isEmpty()){
+            ProIntelPropertyPatentinfo proIntelPropertyPatentinfo = proIntelPropertyPatentInfoListByFlowId.get(0);
+            treeMap61.put("申请公布日", proIntelPropertyPatentinfo.getPublishDate());
+            treeMap61.put("专利名称", proIntelPropertyPatentinfo.getPatentName());
+            treeMap61.put("申请号", proIntelPropertyPatentinfo.getApplicationNum());
+            treeMap61.put("申请公布号", proIntelPropertyPatentinfo.getApplicationPubNum());
+            treeMap61.put("专利类型", proIntelPropertyPatentinfo.getPatentType());
+        }else {
+            treeMap61.put("申请公布日", "");
+            treeMap61.put("专利名称","");
+            treeMap61.put("申请号", "");
+            treeMap61.put("申请公布号", "");
+            treeMap61.put("专利类型", "");
+        }
+
         PdfPTable table61 = returnPdfPTable(treeMap61);
         document.add(table61);
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("网站备案:", 0, 1.5f));
-        ProIntelPropertyWebsiteRecord proIntelPropertyWebsiteRecord = projectDueDiligenceService.getProIntelPropertyWebsiteRecordListByFlowId(flowId).get(0);
+        List<ProIntelPropertyWebsiteRecord> proIntelPropertyWebsiteRecordListByFlowId = projectDueDiligenceService.getProIntelPropertyWebsiteRecordListByFlowId(flowId);
         TreeMap<String, String> treeMap62 = new TreeMap<>();
-        treeMap62.put("审核日期", proIntelPropertyWebsiteRecord.getReviewDate());
-        treeMap62.put("网站名称", proIntelPropertyWebsiteRecord.getWebsiteName());
-        treeMap62.put("IP地址", proIntelPropertyWebsiteRecord.getIpAddress());
-        treeMap62.put("域名信息", proIntelPropertyWebsiteRecord.getDomainNameInfo());
+        if(!proIntelPropertyWebsiteRecordListByFlowId.isEmpty()){
+            ProIntelPropertyWebsiteRecord proIntelPropertyWebsiteRecord = proIntelPropertyWebsiteRecordListByFlowId.get(0);
+            treeMap62.put("审核日期", proIntelPropertyWebsiteRecord.getReviewDate());
+            treeMap62.put("网站名称", proIntelPropertyWebsiteRecord.getWebsiteName());
+            treeMap62.put("IP地址", proIntelPropertyWebsiteRecord.getIpAddress());
+            treeMap62.put("域名信息", proIntelPropertyWebsiteRecord.getDomainNameInfo());
+        }else {
+            treeMap62.put("审核日期", "");
+            treeMap62.put("网站名称", "");
+            treeMap62.put("IP地址", "");
+            treeMap62.put("域名信息", "");
+        }
+
         PdfPTable table62 = returnPdfPTable(treeMap62);
         document.add(table62);
 
@@ -638,14 +740,25 @@ public class ProjectDueDiligenceController {
 
         HeaderAndFooterEvent.SetFont(BaseColor.BLACK, "黑体", 14, Font.BOLD);
         document.add(HeaderAndFooterEvent.AddParagraph("行政处罚:", 0, 1.5f));
-        ProAdminiPenalty proAdminiPenalty = projectDueDiligenceService.getProAdminiPenaltyListByFlowId(flowId).get(0);
+        List<ProAdminiPenalty> proAdminiPenaltyListByFlowId = projectDueDiligenceService.getProAdminiPenaltyListByFlowId(flowId);
         TreeMap<String, String> treeMap7 = new TreeMap<>();
-        treeMap7.put("公司名称", projectPoolName);
-        treeMap7.put("决定日期", proAdminiPenalty.getDecisionDate());
-        treeMap7.put("决定书文号", proAdminiPenalty.getWrittenDecisionNum());
-        treeMap7.put("处罚事由", proAdminiPenalty.getPunishmentCause());
-        treeMap7.put("处罚结果", proAdminiPenalty.getPunishmentResult());
-        treeMap7.put("处罚机关", proAdminiPenalty.getPunishmentOrganization());
+        if(!proAdminiPenaltyListByFlowId.isEmpty()){
+            ProAdminiPenalty proAdminiPenalty = proAdminiPenaltyListByFlowId.get(0);
+            treeMap7.put("公司名称", projectPoolName);
+            treeMap7.put("决定日期", proAdminiPenalty.getDecisionDate());
+            treeMap7.put("决定书文号", proAdminiPenalty.getWrittenDecisionNum());
+            treeMap7.put("处罚事由", proAdminiPenalty.getPunishmentCause());
+            treeMap7.put("处罚结果", proAdminiPenalty.getPunishmentResult());
+            treeMap7.put("处罚机关", proAdminiPenalty.getPunishmentOrganization());
+        }else {
+            treeMap7.put("公司名称", projectPoolName);
+            treeMap7.put("决定日期", "");
+            treeMap7.put("决定书文号", "");
+            treeMap7.put("处罚事由", "");
+            treeMap7.put("处罚结果", "");
+            treeMap7.put("处罚机关", "");
+        }
+
         PdfPTable table7 = returnPdfPTable(treeMap7);
         document.add(table7);
 
diff --git a/src/main/java/com/sztzjy/fund_investment/controller/ProjectValuationController.java b/src/main/java/com/sztzjy/fund_investment/controller/ProjectValuationController.java
index 875446b..fa70c8d 100644
--- a/src/main/java/com/sztzjy/fund_investment/controller/ProjectValuationController.java
+++ b/src/main/java/com/sztzjy/fund_investment/controller/ProjectValuationController.java
@@ -118,10 +118,10 @@ public class ProjectValuationController {
         Boolean aBoolean = projectValuationService.updatePB(flowId, valuePerShare);
         if(aBoolean){
             scoreService.calculateScoreByModule2("projectUseValuationRelativeScore",2,flowId);
-            return new ResultEntity(HttpStatus.OK, "相对估值法-PB市盈率法,修改成功");
+            return new ResultEntity(HttpStatus.OK, "相对估值法-PB市净率法,修改成功");
         }
         scoreService.calculateScoreByModule2("projectUseValuationRelativeScore",0,flowId);
-        return new ResultEntity(HttpStatus.BAD_REQUEST, "您计算的值有误,请检查!(相对估值法-PB市盈率法)");
+        return new ResultEntity(HttpStatus.BAD_REQUEST, "您计算的值有误,请检查!(相对估值法-PB市净率法)");
     }
 
     @GetMapping("updatePS")
@@ -132,10 +132,10 @@ public class ProjectValuationController {
         Boolean aBoolean = projectValuationService.updatePS(flowId, valuePerShare);
         if(aBoolean){
             scoreService.calculateScoreByModule2("projectUseValuationRelativeScore",2,flowId);
-            return new ResultEntity(HttpStatus.OK, "相对估值法-PS市盈率法,修改成功");
+            return new ResultEntity(HttpStatus.OK, "相对估值法-PS市销率法,修改成功");
         }
         scoreService.calculateScoreByModule2("projectUseValuationRelativeScore",0,flowId);
-        return new ResultEntity(HttpStatus.BAD_REQUEST, "您计算的值有误,请检查!(相对估值法-PS市盈率法)");
+        return new ResultEntity(HttpStatus.BAD_REQUEST, "您计算的值有误,请检查!(相对估值法-PS市销率法)");
     }
 
     @PostMapping("updateProjectValuationRelative")
@@ -149,7 +149,7 @@ public class ProjectValuationController {
             return new ResultEntity(HttpStatus.BAD_REQUEST, "相对估值结论为空");
         }
         projectDueDiligenceService.updateServiceDueDiligence(foundProject);
-        scoreService.calculateScoreByModule("projectValuationRelativeScore",2,foundProject.getFlowId());
+//        scoreService.calculateScoreByModule("projectValuationRelativeScore",2,foundProject.getFlowId());
         return new ResultEntity(HttpStatus.OK, "相对估值结论保存成功");
     }
 
@@ -176,7 +176,7 @@ public class ProjectValuationController {
             return new ResultEntity(HttpStatus.BAD_REQUEST, "绝对估值结论为空");
         }
         projectDueDiligenceService.updateServiceDueDiligence(foundProject);
-        scoreService.calculateScoreByModule("projectValuationRelativeScore",2,foundProject.getFlowId());
+//        scoreService.calculateScoreByModule("projectValuationAbsoluteScore",2,foundProject.getFlowId());
         PerformanceScore performanceScore = scoreService.getByFlowId(foundProject.getFlowId());
         performanceScore.setProjectValuationTime(new Date());
         performanceScoreMapper.updateByPrimaryKey(performanceScore);
@@ -259,8 +259,8 @@ public class ProjectValuationController {
         //表中第一行表头字段
         String[] headers = null;
         List<String> listColumn;
-        headers = new String[]{"可比公司名称", "每股市价", "每股收益", "增长率","目标公司名称","增长率", "每股收益","每股价值"};
-        listColumn = Arrays.asList("companyid", "marketPrice", "earnings", "growthRate","id","growthRate1","earnings1","projectPoolId");
+        headers = new String[]{"可比公司名称", "每股市价", "每股收益", "增长率","目标公司名称","增长率", "每股收益"};
+        listColumn = Arrays.asList("companyid", "marketPrice", "earnings", "growthRate","id","growthRate1","earnings1");
         List<EduProjectValuation> eduProjectValuationList = projectValuationService.getPE(flowId);
         for (int i = 0; i < eduProjectValuationList.size(); i++) {
             eduProjectValuationList.get(i).setId(companyName);
@@ -286,8 +286,8 @@ public class ProjectValuationController {
         //表中第一行表头字段
         String[] headers = null;
         List<String> listColumn;
-        headers = new String[]{"可比公司名称", "每股市价", "每股净资产", "权益净利率","目标公司名称","权益净利率", "每股净资产","每股价值"};
-        listColumn = Arrays.asList("companyid", "marketPrice", "netWorth", "netInterest","id","netInterest1","netWorth1","projectPoolId");
+        headers = new String[]{"可比公司名称", "每股市价", "每股净资产", "权益净利率","目标公司名称","权益净利率", "每股净资产"};
+        listColumn = Arrays.asList("companyid", "marketPrice", "netWorth", "netInterest","id","netInterest1","netWorth1");
         List<EduProjectValuation> eduProjectValuationList = projectValuationService.getPB(flowId);
         for (int i = 0; i < eduProjectValuationList.size(); i++) {
             eduProjectValuationList.get(i).setId(companyName);
@@ -313,8 +313,8 @@ public class ProjectValuationController {
         //表中第一行表头字段
         String[] headers = null;
         List<String> listColumn;
-        headers = new String[]{"可比公司名称", "每股市价", "每股营业收入", "营业净利率","目标公司名称","营业净利率", "每股营业收入","每股价值"};
-        listColumn = Arrays.asList("companyid", "marketPrice", "operatingIncome", "netOperatinginterestRate","id","netOperatinginterestRate1","operatingIncome1","projectPoolId");
+        headers = new String[]{"可比公司名称", "每股市价", "每股营业收入", "营业净利率","目标公司名称","营业净利率", "每股营业收入"};
+        listColumn = Arrays.asList("companyid", "marketPrice", "operatingIncome", "netOperatinginterestRate","id","netOperatinginterestRate1","operatingIncome1");
         List<EduProjectValuation> eduProjectValuationList = projectValuationService.getPS(flowId);
         for (int i = 0; i < eduProjectValuationList.size(); i++) {
             eduProjectValuationList.get(i).setId(companyName);
diff --git a/src/main/java/com/sztzjy/fund_investment/service/ISysProjectPoolService.java b/src/main/java/com/sztzjy/fund_investment/service/ISysProjectPoolService.java
index bb1fd58..793d537 100644
--- a/src/main/java/com/sztzjy/fund_investment/service/ISysProjectPoolService.java
+++ b/src/main/java/com/sztzjy/fund_investment/service/ISysProjectPoolService.java
@@ -3,6 +3,12 @@ package com.sztzjy.fund_investment.service;
 import com.github.pagehelper.PageInfo;
 import com.sztzjy.fund_investment.entity.ProjectPool;
 
+import java.util.List;
+
 public interface ISysProjectPoolService {
     PageInfo<ProjectPool> selectList(Integer size, Integer index);
+
+    List<String> getCompanyNameList(String projectSource);
+
+    ProjectPool getProjectPoolByCompanyName(String companyName);
 }
diff --git a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysEduDDMServiceImpl.java b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysEduDDMServiceImpl.java
index 945860c..730775f 100644
--- a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysEduDDMServiceImpl.java
+++ b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysEduDDMServiceImpl.java
@@ -60,7 +60,7 @@ public class SysEduDDMServiceImpl implements ISysEduDDMService {
                 if(eduDDM.getGlnzzl2021()==null || eduDDM.getGdbybcl2021()==null || eduDDM.getQwgl2021()==null){
                     num++;
                 }else {
-                    if(eduDDM.getGsfxgpdnzjz2021().setScale(2, BigDecimal.ROUND_HALF_UP).compareTo(eduDDM.getQwgl2021().divide(eduDDM.getGdbybcl2021().subtract(eduDDM.getGlnzzl2021())).setScale(2,BigDecimal.ROUND_HALF_UP))!=0){
+                    if(eduDDM.getGsfxgpdnzjz2021().setScale(2, BigDecimal.ROUND_HALF_UP).compareTo(eduDDM.getQwgl2021().divide(eduDDM.getGdbybcl2021().subtract(eduDDM.getGlnzzl2021()),4,BigDecimal.ROUND_HALF_UP).setScale(2,BigDecimal.ROUND_HALF_UP))!=0){
                         num++;
                     }
                 }
@@ -71,7 +71,7 @@ public class SysEduDDMServiceImpl implements ISysEduDDMService {
                 if(eduDDM.getGlnzzl2022()==null || eduDDM.getGdbybcl2022()==null || eduDDM.getQwgl2022()==null){
                     num++;
                 }else {
-                    if(eduDDM.getGsfxgpdnzjz2022().setScale(2, BigDecimal.ROUND_HALF_UP).compareTo(eduDDM.getQwgl2022().divide(eduDDM.getGdbybcl2022().subtract(eduDDM.getGlnzzl2022())).setScale(2,BigDecimal.ROUND_HALF_UP))!=0){
+                    if(eduDDM.getGsfxgpdnzjz2022().setScale(2, BigDecimal.ROUND_HALF_UP).compareTo(eduDDM.getQwgl2022().divide(eduDDM.getGdbybcl2022().subtract(eduDDM.getGlnzzl2022()),4,BigDecimal.ROUND_HALF_UP).setScale(2,BigDecimal.ROUND_HALF_UP))!=0){
                         num++;
                     }
                 }
@@ -82,7 +82,7 @@ public class SysEduDDMServiceImpl implements ISysEduDDMService {
                 if(eduDDM.getGlnzzl2023()==null || eduDDM.getGdbybcl2023()==null || eduDDM.getQwgl2023()==null){
                     num++;
                 }else {
-                    if(eduDDM.getGsfxgpdnzjz2023().setScale(2, BigDecimal.ROUND_HALF_UP).compareTo(eduDDM.getQwgl2023().divide(eduDDM.getGdbybcl2023().subtract(eduDDM.getGlnzzl2023())).setScale(2,BigDecimal.ROUND_HALF_UP))!=0){
+                    if(eduDDM.getGsfxgpdnzjz2023().setScale(2, BigDecimal.ROUND_HALF_UP).compareTo(eduDDM.getQwgl2023().divide(eduDDM.getGdbybcl2023().subtract(eduDDM.getGlnzzl2023()),4,BigDecimal.ROUND_HALF_UP).setScale(2,BigDecimal.ROUND_HALF_UP))!=0){
                         num++;
                     }
                 }
@@ -111,15 +111,21 @@ public class SysEduDDMServiceImpl implements ISysEduDDMService {
             }else {
                 num++;
             }
+            if(num>=4){
+                scoreService.calculateScoreByModule2("projectUseValuationAbsoluteScore",0,flowId);
+            }else {
+                scoreService.calculateScoreByModule2("projectUseValuationAbsoluteScore",4-num,flowId);
+            }
         }
 
-
         EduDDM eduDDM1 = ddmMapper.selectByPrimaryKey(flowId);
         if (eduDDM1 == null) {
             ddmMapper.insert(eduDDM);
             return new ResultEntity(HttpStatus.OK, "保存成功");
         }
         ddmMapper.updateByPrimaryKeySelective(eduDDM);
+
+
         return new ResultEntity(HttpStatus.OK, "保存成功");
     }
 }
diff --git a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysEduFCFFServiceImpl.java b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysEduFCFFServiceImpl.java
index 28db953..8f24ea2 100644
--- a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysEduFCFFServiceImpl.java
+++ b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysEduFCFFServiceImpl.java
@@ -72,7 +72,7 @@ public class SysEduFCFFServiceImpl implements ISysEduFCFFService {
     //更新FCFF
     @Override
     public ResultEntity updateFCFFByFlowId(String flowId,EduFCFF eduFCFF) {
-        ResultEntity resultEntity=null;
+        ResultEntity resultEntity=new ResultEntity(HttpStatus.OK, "保存成功");
         EduFCFF fcff = fcffMapper.selectByPrimaryKey(flowId);
         if(fcff==null){
             fcffMapper.insert(eduFCFF);
diff --git a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectDueDiligenceServiceImpl.java b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectDueDiligenceServiceImpl.java
index 55dd679..beb7b08 100644
--- a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectDueDiligenceServiceImpl.java
+++ b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectDueDiligenceServiceImpl.java
@@ -372,14 +372,12 @@ public class SysProjectDueDiligenceServiceImpl implements ISysProjectDueDiligenc
                 num++;
             }
         }
-        if (num - 17 > 0) {
-            scoreService.calculateScoreByModule("projectValuationEstimationRiskScore", num - 17, flowId);
-            return flag;
-        } else {
+        if(proFinancialIndexDetailList.size()-num<=5){
+            scoreService.calculateScoreByModule("projectValuationEstimationRiskScore", 6-proFinancialIndexDetailList.size()+num, flowId);
+        }else {
             scoreService.calculateScoreByModule("projectValuationEstimationRiskScore", 0, flowId);
-            return flag;
         }
-
+        return flag;
     }
 
 
diff --git a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectPoolServiceImpl.java b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectPoolServiceImpl.java
index 13c3b0a..535088d 100644
--- a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectPoolServiceImpl.java
+++ b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectPoolServiceImpl.java
@@ -9,6 +9,7 @@ import com.sztzjy.fund_investment.service.ISysProjectPoolService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Service
@@ -23,4 +24,24 @@ public class SysProjectPoolServiceImpl implements ISysProjectPoolService {
         PageInfo<ProjectPool> pageInfo = new PageInfo<>(projectPools);
         return pageInfo;
     }
+
+    @Override
+    public List<String> getCompanyNameList(String projectSource) {
+        ProjectPoolExample projectPoolExample = new ProjectPoolExample();
+        projectPoolExample.createCriteria().andProjectSourceEqualTo(projectSource);
+        List<ProjectPool> projectPools = projectPoolMapper.selectByExample(projectPoolExample);
+        List<String> companyNameList=new ArrayList<>();
+        for (int i = 0; i < projectPools.size(); i++) {
+            companyNameList.add(projectPools.get(i).getCompanyName());
+        }
+        return companyNameList;
+    }
+
+    @Override
+    public ProjectPool getProjectPoolByCompanyName(String companyName) {
+        ProjectPoolExample projectPoolExample = new ProjectPoolExample();
+        projectPoolExample.createCriteria().andCompanyNameEqualTo(companyName);
+        List<ProjectPool> projectPools = projectPoolMapper.selectByExample(projectPoolExample);
+        return projectPools.get(0);
+    }
 }
diff --git a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectValuationServiceImpl.java b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectValuationServiceImpl.java
index 67084a3..5c8c8fd 100644
--- a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectValuationServiceImpl.java
+++ b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/SysProjectValuationServiceImpl.java
@@ -91,25 +91,31 @@ public class SysProjectValuationServiceImpl implements ISysProjectValuationServi
                 growthRate1=valuation.getGrowthRate1();
                 earnings1=valuation.getEarnings1();
             }
-            BigDecimal marketPrice = valuation.getMarketPrice(); //对比公司 每股市价
-            BigDecimal earnings = valuation.getEarnings(); //对比公司 每股收益
-            BigDecimal growthRate = valuation.getGrowthRate(); //对比公司 增长率
-            flag = flag.add(marketPrice.divide(earnings).divide(growthRate));
+            BigDecimal marketPrice = valuation.getMarketPrice().setScale(4,BigDecimal.ROUND_HALF_UP); //对比公司 每股市价
+            BigDecimal earnings = valuation.getEarnings().setScale(4,BigDecimal.ROUND_HALF_UP); //对比公司 每股收益
+            BigDecimal growthRate = valuation.getGrowthRate().setScale(4,BigDecimal.ROUND_HALF_UP); //对比公司 增长率
+            try {
+                flag = flag.add(marketPrice.divide(earnings,4,BigDecimal.ROUND_HALF_UP).divide(growthRate,4,BigDecimal.ROUND_HALF_UP));
+            }catch (Exception e){
+                return false;
+            }
+
         }
-        BigDecimal avg = flag.divide(BigDecimal.valueOf(3)); //平均数
+        BigDecimal avg = flag.divide(BigDecimal.valueOf(3),4,BigDecimal.ROUND_HALF_UP); //平均数
         BigDecimal answer = avg.multiply(growthRate1).multiply(earnings1).setScale(2,BigDecimal.ROUND_HALF_UP);
-        if(answer.compareTo(valuePerShare)!=0){
-            return false;
-        }
+
         if(bigDecimal.compareTo(BigDecimal.ZERO)==0){
             EduProjectValuationAnswer projectValuationAnswer=new EduProjectValuationAnswer();
             String uuid = String.valueOf(UUID.randomUUID());
             projectValuationAnswer.setAnswerId(uuid);
             projectValuationAnswer.setFlowId(flowId);
             projectValuationAnswer.setMethod("PE");
-            projectValuationAnswer.setValuePerShare(answer);
+            projectValuationAnswer.setValuePerShare(valuePerShare);
             projectValuationAnswerMapper.insert(projectValuationAnswer);
         }
+        if(valuePerShare.subtract(answer).abs().compareTo(new BigDecimal("0.1"))>0){
+            return false;
+        }
         return true;
     }
 
@@ -132,13 +138,10 @@ public class SysProjectValuationServiceImpl implements ISysProjectValuationServi
             BigDecimal marketPrice = valuation.getMarketPrice(); //对比公司 每股市价
             BigDecimal netWorth = valuation.getNetWorth();//对比公司 每股净资产
             BigDecimal netInterest = valuation.getNetInterest();//对比公司 权益净利率
-            flag = flag.add(marketPrice.divide(netWorth,2,BigDecimal.ROUND_HALF_UP).divide(netInterest,2,BigDecimal.ROUND_HALF_UP));
+            flag = flag.add(marketPrice.divide(netWorth,6,BigDecimal.ROUND_HALF_UP).divide(netInterest,6,BigDecimal.ROUND_HALF_UP));
         }
-        BigDecimal avg = flag.divide(BigDecimal.valueOf(3)); //平均数
+        BigDecimal avg = flag.divide(BigDecimal.valueOf(3),6,BigDecimal.ROUND_HALF_UP); //平均数
         BigDecimal answer = avg.multiply(netWorth1).multiply(netInterest1).setScale(2,BigDecimal.ROUND_HALF_UP);
-        if(answer.compareTo(valuePerShare)!=0){
-            return false;
-        }
 
         if(bigDecimal.compareTo(BigDecimal.ZERO)==0){
             EduProjectValuationAnswer projectValuationAnswer=new EduProjectValuationAnswer();
@@ -146,9 +149,12 @@ public class SysProjectValuationServiceImpl implements ISysProjectValuationServi
             projectValuationAnswer.setAnswerId(uuid);
             projectValuationAnswer.setFlowId(flowId);
             projectValuationAnswer.setMethod("PB");
-            projectValuationAnswer.setValuePerShare(answer);
+            projectValuationAnswer.setValuePerShare(valuePerShare);
             projectValuationAnswerMapper.insert(projectValuationAnswer);
         }
+        if(valuePerShare.subtract(answer).abs().compareTo(new BigDecimal("0.1"))>0){
+            return false;
+        }
         return true;
     }
 
@@ -158,7 +164,7 @@ public class SysProjectValuationServiceImpl implements ISysProjectValuationServi
         if (bigDecimal.compareTo(BigDecimal.ZERO)>0){
             return true;
         }
-        List<EduProjectValuation> valuationList = getPB(flowId);
+        List<EduProjectValuation> valuationList = getPS(flowId);
         BigDecimal flag=BigDecimal.ZERO;
         BigDecimal operatingIncome1=BigDecimal.ZERO;
         BigDecimal netOperatinginterestRate1=BigDecimal.ZERO;
@@ -168,16 +174,13 @@ public class SysProjectValuationServiceImpl implements ISysProjectValuationServi
                 operatingIncome1 = valuation.getOperatingIncome1();
                 netOperatinginterestRate1 = valuation.getNetOperatinginterestRate1();
             }
-            BigDecimal marketPrice = valuation.getMarketPrice(); //对比公司 每股市价
-            BigDecimal operatingIncome = valuation.getOperatingIncome();//对比公司 每股营业收入
-            BigDecimal netOperatinginterestRate = valuation.getNetOperatinginterestRate();//对比公司 营业净利率
-            flag = flag.add(marketPrice.divide(operatingIncome).divide(netOperatinginterestRate));
+            BigDecimal marketPrice = valuation.getMarketPrice().setScale(4,BigDecimal.ROUND_HALF_UP); //对比公司 每股市价
+            BigDecimal operatingIncome = valuation.getOperatingIncome().setScale(4,BigDecimal.ROUND_HALF_UP);//对比公司 每股营业收入
+            BigDecimal netOperatinginterestRate = valuation.getNetOperatinginterestRate().setScale(4,BigDecimal.ROUND_HALF_UP);//对比公司 营业净利率
+            flag = flag.add(marketPrice.divide(operatingIncome,4,BigDecimal.ROUND_HALF_UP).divide(netOperatinginterestRate,4,BigDecimal.ROUND_HALF_UP));
         }
-        BigDecimal avg = flag.divide(BigDecimal.valueOf(3)); //平均数
+        BigDecimal avg = flag.divide(BigDecimal.valueOf(3),4,BigDecimal.ROUND_HALF_UP); //平均数
         BigDecimal answer = avg.multiply(operatingIncome1).multiply(netOperatinginterestRate1).setScale(2,BigDecimal.ROUND_HALF_UP);
-        if(answer.compareTo(valuePerShare)!=0){
-            return false;
-        }
 
         if(bigDecimal.compareTo(BigDecimal.ZERO)==0){
             EduProjectValuationAnswer projectValuationAnswer=new EduProjectValuationAnswer();
@@ -185,9 +188,12 @@ public class SysProjectValuationServiceImpl implements ISysProjectValuationServi
             projectValuationAnswer.setAnswerId(uuid);
             projectValuationAnswer.setFlowId(flowId);
             projectValuationAnswer.setMethod("PS");
-            projectValuationAnswer.setValuePerShare(answer);
+            projectValuationAnswer.setValuePerShare(valuePerShare);
             projectValuationAnswerMapper.insert(projectValuationAnswer);
         }
+        if(valuePerShare.subtract(answer).abs().compareTo(new BigDecimal("0.1"))>0){
+            return false;
+        }
         return true;
     }
 }
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 f0e6971..5450b12 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
@@ -283,27 +283,27 @@ public class ClassScoreServiceImpl implements ClassScoreService {
                 String projectValuationRelative = "";
                 String projectValuationAbsolute = "";
                 String foundProjectConclusion = "";
-                if (foundProject.getFoundProjectConclusion() == null) {
+                if (StringUtils.isBlank(foundProject.getFoundProjectConclusion())) {
                     performanceScoreService.updateScore("projectSearchReportScore", 0, flowId);
                 } else {
                     foundProjectConclusion = foundProject.getFoundProjectConclusion(); // 寻找项目结论
                 }
-                if (foundProject.getServiceDueDiligence() == null) {
+                if (StringUtils.isBlank(foundProject.getServiceDueDiligence())) {
                     performanceScoreService.updateScore("projectDueDiligenceBusinessReportScore", 0, flowId);
                 } else {
                     serviceDueDiligence = foundProject.getServiceDueDiligence();  //  业务尽调结论
                 }
-                if (foundProject.getFinancialDueDiligence() == null) {
+                if (StringUtils.isBlank(foundProject.getFinancialDueDiligence())) {
                     performanceScoreService.updateScore("projectDueDiligenceFinanceReportScore", 0, flowId);
                 } else {
                     financialDueDiligence = foundProject.getFinancialDueDiligence(); //财务尽调结论
                 }
-                if (foundProject.getProjectValuationRelative() == null) {
+                if (StringUtils.isBlank(foundProject.getProjectValuationRelative())) {
                     performanceScoreService.updateScore("projectValuationRelativeScore", 0, flowId);
                 } else {
                     projectValuationRelative = foundProject.getProjectValuationRelative();//相对估值结论得分
                 }
-                if (foundProject.getProjectValuationAbsolute() == null) {
+                if (StringUtils.isBlank(foundProject.getProjectValuationAbsolute())) {
                     performanceScoreService.updateScore("projectValuationAbsoluteScore", 0, flowId);
                 } else {
                     projectValuationAbsolute = foundProject.getProjectValuationAbsolute();//绝对估值结论得分