Browse Source

修改档案巡检,保存每期专家意见

qianxb 1 year ago
parent
commit
281f055be6
30 changed files with 333 additions and 103 deletions
  1. 4 4
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchiveExpertConclusion.java
  2. 14 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchiveExpertScore.java
  3. 3 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ExpertInspection.java
  4. 2 1
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/feign/ArchiveAutoClient.java
  5. 1 1
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/feign/ArchiveExpertConclusionClient.java
  6. 18 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/UpdateExpertVO.java
  7. 86 20
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveExpertConclusionController.java
  8. 14 11
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java
  9. 6 3
      blade-service/blade-archive/src/main/java/org/springblade/archive/feign/ArchiveAutoClientImpl.java
  10. 2 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/feign/ArchiveExpertConclusionClientImpl.java
  11. 2 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchiveExpertScoreMapper.java
  12. 6 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchiveExpertScoreMapper.xml
  13. 1 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java
  14. 2 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml
  15. 1 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ExpertInspectionMapper.java
  16. 2 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ExpertInspectionMapper.xml
  17. 10 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveExpertConclusionService.java
  18. 1 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveExpertScoreService.java
  19. 4 4
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java
  20. 1 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/IExpertInspectionService.java
  21. 73 10
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveExpertConclusionServiceImpl.java
  22. 10 5
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveExpertScoreServiceImpl.java
  23. 24 15
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  24. 2 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ExpertInspectionServiceImpl.java
  25. 6 3
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  26. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java
  27. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java
  28. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml
  29. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeContractService.java
  30. 26 10
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

+ 4 - 4
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchiveExpertConclusion.java

@@ -65,10 +65,10 @@ public class ArchiveExpertConclusion extends BaseEntity {
     @ApiModelProperty("存在问题及建议")
     @ApiModelProperty("存在问题及建议")
     private String questionSuggest;
     private String questionSuggest;
 
 
-    @ApiModelProperty("审批状态,0未上报,1待审批,2已审批,3已废除")
-    private Integer approveStatus;
-
-    @ApiModelProperty("审批状态,0未上报,1待审批,2已审批,3已废除")
+    @ApiModelProperty("生成报告PDF时间")
     private LocalDate approveDate;
     private LocalDate approveDate;
 
 
+    @ApiModelProperty("任务")
+    private Long taskId;
+
 }
 }

+ 14 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchiveExpertScore.java

@@ -42,6 +42,9 @@ public class ArchiveExpertScore extends BaseEntity {
     @ApiModelProperty("项目id")
     @ApiModelProperty("项目id")
     private Long projectId;
     private Long projectId;
 
 
+    @ApiModelProperty("结论id")
+    private Long conclusionId;
+
     @ApiModelProperty("单位类型:1业主2监理3施工")
     @ApiModelProperty("单位类型:1业主2监理3施工")
     private Integer unitType;
     private Integer unitType;
 
 
@@ -72,4 +75,15 @@ public class ArchiveExpertScore extends BaseEntity {
         this.normative = normative;
         this.normative = normative;
         this.normativeDeduction = normativeDeduction;
         this.normativeDeduction = normativeDeduction;
     }
     }
+
+    public ArchiveExpertScore(Long projectId, Long conclusionId, Integer unitType, String scoreItem, Integer integrality, Integer integralityDeduction, Integer normative, Integer normativeDeduction) {
+        this.projectId = projectId;
+        this.conclusionId = conclusionId;
+        this.unitType = unitType;
+        this.scoreItem = scoreItem;
+        this.integrality = integrality;
+        this.integralityDeduction = integralityDeduction;
+        this.normative = normative;
+        this.normativeDeduction = normativeDeduction;
+    }
 }
 }

+ 3 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ExpertInspection.java

@@ -19,6 +19,9 @@ public class ExpertInspection extends BaseEntity {
     @ApiModelProperty("项目id")
     @ApiModelProperty("项目id")
     private Long projectId;
     private Long projectId;
 
 
+    @ApiModelProperty("结论id")
+    private Long conclusionId;
+
     @ApiModelProperty("单位类型:1施工2监理3业主")
     @ApiModelProperty("单位类型:1施工2监理3业主")
     private Integer UnitType;
     private Integer UnitType;
 
 

+ 2 - 1
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/feign/ArchiveAutoClient.java

@@ -3,6 +3,7 @@ package org.springblade.archive.feign;
 import org.springblade.archive.entity.ArchiveProjectConfig;
 import org.springblade.archive.entity.ArchiveProjectConfig;
 import org.springblade.archive.entity.ArchivesAuto;
 import org.springblade.archive.entity.ArchivesAuto;
 import org.springblade.archive.vo.ArchivesAutoVO;
 import org.springblade.archive.vo.ArchivesAutoVO;
+import org.springblade.archive.vo.UpdateExpertVO;
 import org.springblade.common.constant.ArchiveConstant;
 import org.springblade.common.constant.ArchiveConstant;
 import org.springblade.common.constant.EVisaConstant;
 import org.springblade.common.constant.EVisaConstant;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
@@ -42,5 +43,5 @@ public interface ArchiveAutoClient {
      * 批量修改档案专家,参数为节点集合
      * 批量修改档案专家,参数为节点集合
      */
      */
     @PostMapping(API_PREFIX + "/batchUpdateExpertId")
     @PostMapping(API_PREFIX + "/batchUpdateExpertId")
-    R<Boolean> batchUpdateExpertId(@RequestParam String userId,@RequestParam List<Long> ids);
+    R<Boolean> batchUpdateExpertId(@RequestBody UpdateExpertVO vo);
 }
 }

+ 1 - 1
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/feign/ArchiveExpertConclusionClient.java

@@ -14,5 +14,5 @@ public interface ArchiveExpertConclusionClient {
     String API_PREFIX = "/api/archive/archiveExpertConclusion";
     String API_PREFIX = "/api/archive/archiveExpertConclusion";
 
 
     @GetMapping(API_PREFIX + "/saveBaseTableInfo")
     @GetMapping(API_PREFIX + "/saveBaseTableInfo")
-    R saveBaseTableInfo(@RequestParam Long projectId, @RequestParam String appUrl);
+    R saveBaseTableInfo(@RequestParam Long projectId, @RequestParam String appUrl,@RequestParam Long taskId);
 }
 }

+ 18 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/UpdateExpertVO.java

@@ -0,0 +1,18 @@
+package org.springblade.archive.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Param   用于批量修改传参
+ * @Author wangwl
+ * @Date 2024/1/10 18:18
+ **/
+@Data
+public class UpdateExpertVO implements Serializable {
+    private static final long serialVersionUID = 996L;
+
+    private String ids;
+    private String userid;
+}

+ 86 - 20
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveExpertConclusionController.java

@@ -11,10 +11,7 @@ import org.springblade.archive.entity.ArchiveExpertConclusion;
 import org.springblade.archive.service.IArchiveExpertConclusionService;
 import org.springblade.archive.service.IArchiveExpertConclusionService;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
-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 java.util.List;
 import java.util.List;
 
 
@@ -67,25 +64,13 @@ public class ArchiveExpertConclusionController extends BladeController {
     public R getAppPreview(@RequestParam Long projectId) {
     public R getAppPreview(@RequestParam Long projectId) {
         return R.data(conclusionService.getAppPreview(projectId));
         return R.data(conclusionService.getAppPreview(projectId));
     }
     }
-    /**
-     * 在线验收-查看验收报告
-     */
-    @GetMapping("/getTable")
-    @ApiOperationSupport(order = 5)
-    @ApiOperation(value = "在线验收-查看验收报告", notes = "传入当前项目id,返回当期验收报告URL地址")
-    @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "projectId", value = "项目id", required = true)
-    })
-    public R getTable(@RequestParam Long projectId) {
-        return R.data(conclusionService.getTable(projectId));
-    }
 
 
     /**
     /**
      * 编写结论-是否生成打分表
      * 编写结论-是否生成打分表
      */
      */
     @GetMapping("/creatScore")
     @GetMapping("/creatScore")
-    @ApiOperationSupport(order = 1)
-    @ApiOperation(value = "验收申请-是否生成打分表", notes = "传入当前项目id,返回1选择0不选择")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "编写结论-是否生成打分表", notes = "传入当前项目id,返回1选择0不选择")
     @ApiImplicitParams(value = {
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "projectId", value = "项目id", required = true)
             @ApiImplicitParam(name = "projectId", value = "项目id", required = true)
     })
     })
@@ -97,8 +82,8 @@ public class ArchiveExpertConclusionController extends BladeController {
      * 编写结论-修改是否生成打分表
      * 编写结论-修改是否生成打分表
      */
      */
     @GetMapping("/updateScore")
     @GetMapping("/updateScore")
-    @ApiOperationSupport(order = 1)
-    @ApiOperation(value = "验收申请-修改是否生成打分表", notes = "传入当前项目id,传入1选择0不选择")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "编写结论-修改是否生成打分表", notes = "传入当前项目id,传入1选择0不选择")
     @ApiImplicitParams(value = {
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
             @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
             @ApiImplicitParam(name = "isSelect", value = "1选择0不选择", required = true)
             @ApiImplicitParam(name = "isSelect", value = "1选择0不选择", required = true)
@@ -107,4 +92,85 @@ public class ArchiveExpertConclusionController extends BladeController {
         conclusionService.updateScore(projectId,isSelect);
         conclusionService.updateScore(projectId,isSelect);
         return R.data("修改成功");
         return R.data("修改成功");
     }
     }
+
+    /**
+     * 在线验收-获取当前期在线验收id
+     */
+    @GetMapping("/getCurrentId")
+    @ApiOperationSupport(order = 9)
+    @ApiOperation(value = "在线验收-获取当前期在线验收id", notes = "传入当前项目id,返回当前期在线验收id")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true)
+    })
+    public R getCurrentId(@RequestParam Long projectId) {
+        return R.data(conclusionService.getCurrentId(projectId));
+    }
+
+    /**
+     * 在线验收-下一步编写报告,校验
+     */
+    @GetMapping("/checkTable")
+    @ApiOperationSupport(order = 9)
+    @ApiOperation(value = "在线验收-下一步编写报告,校验", notes = "传入当前项目id,返回ture允许跳转")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true)
+    })
+    public R checkTable(@RequestParam Long projectId) {
+        return R.data(conclusionService.checkTable(projectId));
+    }
+
+    /**
+     * 在线验收-获取结论
+     */
+    @GetMapping("/getTable")
+    @ApiOperationSupport(order = 10)
+    @ApiOperation(value = "在线验收-获取结论", notes = "传入当前项目id,返回结论信息")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true)
+    })
+    public R<ArchiveExpertConclusion> getTable(@RequestParam Long projectId) {
+        return R.data(conclusionService.getTable(projectId));
+    }
+
+
+    /**
+     * 编写结论-暂存草稿
+     */
+    @PostMapping("/getTable")
+    @ApiOperationSupport(order = 12)
+    @ApiOperation(value = "在线验收-暂存草稿", notes = "传入结论信息")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true)
+    })
+    public R getTable(@RequestBody ArchiveExpertConclusion conclusion) {
+        conclusionService.updateById(conclusion);
+        return R.data("草稿保存成功");
+    }
+
+    /**
+     * 编写结论-校验提交权限
+     */
+    @GetMapping("/checkSubmit")
+    @ApiOperationSupport(order = 12)
+    @ApiOperation(value = "在线验收-确认提交权限", notes = "传入项目id,返回true代表为专家组长,显示提交按钮")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true)
+    })
+    public R checkSubmit(@RequestParam Long projectId) {
+        return R.data(conclusionService.checkSubmit(projectId));
+    }
+
+    /**
+     * 编写结论-确认提交
+     */
+    @PostMapping("/submitTable")
+    @ApiOperationSupport(order = 12)
+    @ApiOperation(value = "在线验收-确认提交", notes = "传入结论信息")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true)
+    })
+    public R submitTable(@RequestBody ArchiveExpertConclusion conclusion) {
+        conclusionService.submitTable(conclusion);
+        return R.data("提交成功");
+    }
 }
 }

+ 14 - 11
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -808,10 +808,11 @@ public class ArchivesAutoController extends BladeController {
 	@ApiOperation(value = "在线验收-修改抽检状态", notes = "在当前页面停留30秒再调接口:传入档案id,返回查阅完成,可以显示到页面")
 	@ApiOperation(value = "在线验收-修改抽检状态", notes = "在当前页面停留30秒再调接口:传入档案id,返回查阅完成,可以显示到页面")
 	@ApiImplicitParams(value = {
 	@ApiImplicitParams(value = {
 			@ApiImplicitParam(name = "projectId", value = "项目id", required = true),
 			@ApiImplicitParam(name = "projectId", value = "项目id", required = true),
-			@ApiImplicitParam(name = "archiveId", value = "档案id", required = true)
+			@ApiImplicitParam(name = "archiveId", value = "档案id", required = true),
+			@ApiImplicitParam(name = "conclusionId", value = "当前期id", required = true)
 	})
 	})
-	public R updateInspectStatus(@RequestParam Long archiveId,@RequestParam Long projectId) {
-		archivesAutoService.updateInspectStatus(archiveId,projectId);
+	public R updateInspectStatus(@RequestParam Long archiveId,@RequestParam Long projectId,@RequestParam Long conclusionId) {
+		archivesAutoService.updateInspectStatus(archiveId,projectId,conclusionId);
 		return R.data("当前案卷查阅完成");
 		return R.data("当前案卷查阅完成");
 	}
 	}
 
 
@@ -823,10 +824,11 @@ public class ArchivesAutoController extends BladeController {
 	@ApiOperation(value = "在线验收-获取档案文件抽检意见", notes = "传入项目id,文件id")
 	@ApiOperation(value = "在线验收-获取档案文件抽检意见", notes = "传入项目id,文件id")
 	@ApiImplicitParams(value = {
 	@ApiImplicitParams(value = {
 			@ApiImplicitParam(name = "projectId", value = "项目id", required = true),
 			@ApiImplicitParam(name = "projectId", value = "项目id", required = true),
-			@ApiImplicitParam(name = "fileId", value = "文件id", required = true)
+			@ApiImplicitParam(name = "fileId", value = "文件id", required = true),
+			@ApiImplicitParam(name = "conclusionId", value = "当前期id", required = true)
 	})
 	})
-	public R<ExpertInspectionVO> getArchiveFileOpinion(@RequestParam Long fileId,@RequestParam Long projectId) {
-		ExpertInspectionVO vo = archivesAutoService.getArchiveFileOpinion(fileId, projectId);
+	public R<ExpertInspectionVO> getArchiveFileOpinion(@RequestParam Long fileId,@RequestParam Long projectId,@RequestParam Long conclusionId) {
+		ExpertInspectionVO vo = archivesAutoService.getArchiveFileOpinion(fileId, projectId,conclusionId);
 		return R.data(vo);
 		return R.data(vo);
 	}
 	}
 
 
@@ -840,7 +842,8 @@ public class ArchivesAutoController extends BladeController {
 			@ApiImplicitParam(name = "projectId", value = "项目id", required = true),
 			@ApiImplicitParam(name = "projectId", value = "项目id", required = true),
 			@ApiImplicitParam(name = "archiveId", value = "档案id", required = true),
 			@ApiImplicitParam(name = "archiveId", value = "档案id", required = true),
 			@ApiImplicitParam(name = "fileId", value = "文件id", required = false),
 			@ApiImplicitParam(name = "fileId", value = "文件id", required = false),
-			@ApiImplicitParam(name = "opinion", value = "抽检意见", required = false)
+			@ApiImplicitParam(name = "opinion", value = "抽检意见", required = false),
+			@ApiImplicitParam(name = "conclusionId", value = "结论id", required = false)
 	})
 	})
 	public R saveInspect(@RequestBody ExpertInspection inspection) {
 	public R saveInspect(@RequestBody ExpertInspection inspection) {
 		archivesAutoService.saveInspect(inspection);
 		archivesAutoService.saveInspect(inspection);
@@ -858,8 +861,8 @@ public class ArchivesAutoController extends BladeController {
 			@ApiImplicitParam(name = "size", value = "每页的数量", required = true),
 			@ApiImplicitParam(name = "size", value = "每页的数量", required = true),
 			@ApiImplicitParam(name = "projectId", value = "项目id", required = true)
 			@ApiImplicitParam(name = "projectId", value = "项目id", required = true)
 	})
 	})
-	public R<IPage<ExpertInspectionVO>> getUserInspectInfo(Query query,@RequestParam Long projectId) {
-		IPage<ExpertInspectionVO> page = archivesAutoService.getUserInspectInfo(query, projectId);
+	public R<IPage<ExpertInspectionVO>> getUserInspectInfo(Query query,@RequestParam Long projectId,@RequestParam Long conclusionId) {
+		IPage<ExpertInspectionVO> page = archivesAutoService.getUserInspectInfo(query, projectId,conclusionId);
 		return R.data(page);
 		return R.data(page);
 	}
 	}
 
 
@@ -874,8 +877,8 @@ public class ArchivesAutoController extends BladeController {
 			@ApiImplicitParam(name = "size", value = "每页的数量", required = true),
 			@ApiImplicitParam(name = "size", value = "每页的数量", required = true),
 			@ApiImplicitParam(name = "projectId", value = "项目id", required = true)
 			@ApiImplicitParam(name = "projectId", value = "项目id", required = true)
 	})
 	})
-	public R<IPage<ExpertInspectionVO>> getUserInspectInfo2(Query query,@RequestParam Long projectId) {
-		IPage<ExpertInspectionVO> page = archivesAutoService.getUserInspectInfo2(query, projectId);
+	public R<IPage<ExpertInspectionVO>> getUserInspectInfo2(Query query,@RequestParam Long projectId,@RequestParam Long conclusionId) {
+		IPage<ExpertInspectionVO> page = archivesAutoService.getUserInspectInfo2(query, projectId,conclusionId);
 		return R.data(page);
 		return R.data(page);
 	}
 	}
 
 

+ 6 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/feign/ArchiveAutoClientImpl.java

@@ -8,6 +8,7 @@ import org.springblade.archive.mapper.ArchivesAutoMapper;
 import org.springblade.archive.service.IArchiveProjectConfigService;
 import org.springblade.archive.service.IArchiveProjectConfigService;
 import org.springblade.archive.service.IArchivesAutoService;
 import org.springblade.archive.service.IArchivesAutoService;
 import org.springblade.archive.vo.ArchivesAutoVO;
 import org.springblade.archive.vo.ArchivesAutoVO;
+import org.springblade.archive.vo.UpdateExpertVO;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.Func;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -50,21 +51,23 @@ public class ArchiveAutoClientImpl implements ArchiveAutoClient {
     }
     }
 
 
     @Override
     @Override
-    public R<Boolean> batchUpdateExpertId(String userId, List<Long> ids) {
+    public R<Boolean> batchUpdateExpertId(UpdateExpertVO vo) {
+        List<Long> ids = Func.toLongList(vo.getIds());
         List<ArchivesAuto> list = autoMapper.getNodeAllArchive(ids);
         List<ArchivesAuto> list = autoMapper.getNodeAllArchive(ids);
         //循环判断是否已经存在专家,存在则追加
         //循环判断是否已经存在专家,存在则追加
         list.stream().forEach(l->{
         list.stream().forEach(l->{
             if (StringUtils.isBlank(l.getExpertId())){
             if (StringUtils.isBlank(l.getExpertId())){
                 //为空
                 //为空
-                l.setExpertId(userId);
+                l.setExpertId(vo.getUserid());
             }else {
             }else {
                 //不为空
                 //不为空
                 String expertId = l.getExpertId();
                 String expertId = l.getExpertId();
-                l.setExpertId(expertId+","+userId);
+                l.setExpertId(expertId+","+vo.getUserid());
             }
             }
         });
         });
         //保存所有节点
         //保存所有节点
         archivesAutoService.updateBatchById(list);
         archivesAutoService.updateBatchById(list);
         return R.data(true);
         return R.data(true);
     }
     }
+
 }
 }

+ 2 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/feign/ArchiveExpertConclusionClientImpl.java

@@ -16,7 +16,7 @@ public class ArchiveExpertConclusionClientImpl implements ArchiveExpertConclusio
 
 
 
 
     @Override
     @Override
-    public R saveBaseTableInfo(Long projectId, String appUrl) {
-        return conclusionService.saveBaseTableInfo(projectId,appUrl);
+    public R saveBaseTableInfo(Long projectId, String appUrl,Long taskId) {
+        return conclusionService.saveBaseTableInfo(projectId,appUrl,taskId);
     }
     }
 }
 }

+ 2 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchiveExpertScoreMapper.java

@@ -3,6 +3,7 @@ package org.springblade.archive.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
+import org.springblade.archive.entity.ArchiveExpertConclusion;
 import org.springblade.archive.entity.ArchiveExpertScore;
 import org.springblade.archive.entity.ArchiveExpertScore;
 import org.springblade.archive.entity.ExpertInspection;
 import org.springblade.archive.entity.ExpertInspection;
 
 
@@ -18,4 +19,5 @@ import java.util.List;
 public interface ArchiveExpertScoreMapper extends BaseMapper<ArchiveExpertScore> {
 public interface ArchiveExpertScoreMapper extends BaseMapper<ArchiveExpertScore> {
 
 
 
 
+    ArchiveExpertConclusion getConclusion(@Param("projectId") Long projectId);
 }
 }

+ 6 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchiveExpertScoreMapper.xml

@@ -3,4 +3,10 @@
 <mapper namespace="org.springblade.archive.mapper.ArchiveExpertScoreMapper">
 <mapper namespace="org.springblade.archive.mapper.ArchiveExpertScoreMapper">
 
 
 
 
+    <select id="getConclusion" resultType="org.springblade.archive.entity.ArchiveExpertConclusion">
+        select * from u_archive_expert_conclusion
+        where project_id = #{projectId} and is_deleted = 0
+        order by create_time desc
+        limit 1
+    </select>
 </mapper>
 </mapper>

+ 1 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java

@@ -185,7 +185,7 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
 
 
 	Integer getUserReviewedTotal(@Param("projectId") Long projectId,@Param("userId") Long userId);
 	Integer getUserReviewedTotal(@Param("projectId") Long projectId,@Param("userId") Long userId);
 
 
-	IPage<ExpertInspectionVO> getUserInspectInfo(IPage<ExpertInspectionVO> page,@Param("projectId") Long projectId,@Param("userId") Long userId);
+	IPage<ExpertInspectionVO> getUserInspectInfo(IPage<ExpertInspectionVO> page,@Param("projectId") Long projectId,@Param("userId") Long userId,@Param("conclusionId") Long conclusionId);
 
 
     List<ArchivesAutoVO3> getAllInspectArchive(@Param("projectId")Long projectId);
     List<ArchivesAutoVO3> getAllInspectArchive(@Param("projectId")Long projectId);
 
 

+ 2 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -1065,11 +1065,11 @@
              ) a
              ) a
     </select>
     </select>
     <select id="getUserInspectInfo" resultType="org.springblade.archive.vo.ExpertInspectionVO">
     <select id="getUserInspectInfo" resultType="org.springblade.archive.vo.ExpertInspectionVO">
-        select aei.id,aei.archive_name ,aei.opinion , aei.archive_id,expert_name,file_id,aei.is_pass,
+        select aei.id,aei.archive_name ,aei.opinion , aei.archive_id,expert_name,file_id,aei.is_pass,aei.conclusion_id,
                (case when unit_type = 1 then '施工' when unit_type = 2 then '监理' else '业主' end) as unitName,
                (case when unit_type = 1 then '施工' when unit_type = 2 then '监理' else '业主' end) as unitName,
                (select uaf.pdf_file_url from u_archive_file uaf where uaf.id = aei.file_id) as filePdf
                (select uaf.pdf_file_url from u_archive_file uaf where uaf.id = aei.file_id) as filePdf
         from u_archive_expert_inspection aei
         from u_archive_expert_inspection aei
-        WHERE project_id = #{projectId} and is_deleted = 0 and is_pass = 0
+        WHERE project_id = #{projectId} and is_deleted = 0 and is_pass = 0 and conclusion_id = #{conclusionId}
         <if test="userId != null">
         <if test="userId != null">
             and expert_id = #{userId}
             and expert_id = #{userId}
         </if>
         </if>

+ 1 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ExpertInspectionMapper.java

@@ -17,5 +17,5 @@ import java.util.List;
  */
  */
 public interface ExpertInspectionMapper extends BaseMapper<ExpertInspection> {
 public interface ExpertInspectionMapper extends BaseMapper<ExpertInspection> {
 
 
-    List<ExpertInspection> getListByFileId(@Param("fileId") Long fileId,@Param("projectId") Long projectId);
+    List<ExpertInspection> getListByFileId(@Param("fileId") Long fileId,@Param("projectId") Long projectId,@Param("conclusionId") Long conclusionId);
 }
 }

+ 2 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ExpertInspectionMapper.xml

@@ -4,6 +4,7 @@
 
 
     <select id="getListByFileId" resultType="org.springblade.archive.entity.ExpertInspection">
     <select id="getListByFileId" resultType="org.springblade.archive.entity.ExpertInspection">
         select * from u_archive_expert_inspection
         select * from u_archive_expert_inspection
-        where project_id = #{projectId} and file_id = #{fileId} and is_deleted = 0 and is_pass = 0
+        where project_id = #{projectId} and file_id = #{fileId} and conclusion_id = #{conclusionId}
+        and is_deleted = 0 and is_pass = 0
     </select>
     </select>
 </mapper>
 </mapper>

+ 10 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveExpertConclusionService.java

@@ -12,7 +12,7 @@ public interface IArchiveExpertConclusionService extends BaseService<ArchiveExpe
 
 
 
 
     //验收申请审批通过,创建当前报表基本信息
     //验收申请审批通过,创建当前报表基本信息
-    R saveBaseTableInfo(Long projectId,String appUrl);
+    R saveBaseTableInfo(Long projectId,String appUrl,Long taskId);
 
 
     Boolean getAppStatus(Long projectId);
     Boolean getAppStatus(Long projectId);
 
 
@@ -20,9 +20,17 @@ public interface IArchiveExpertConclusionService extends BaseService<ArchiveExpe
 
 
     String getAppPreview(Long projectId);
     String getAppPreview(Long projectId);
 
 
-    String getTable(Long projectId);
+    ArchiveExpertConclusion getTable(Long projectId);
 
 
     Integer creatScore(Long projectId);
     Integer creatScore(Long projectId);
 
 
     void updateScore(Long projectId, Integer isSelect);
     void updateScore(Long projectId, Integer isSelect);
+
+    Boolean checkTable(Long projectId);
+
+    void submitTable(ArchiveExpertConclusion conclusion);
+
+    Boolean checkSubmit(Long projectId);
+
+    Long getCurrentId(Long projectId);
 }
 }

+ 1 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveExpertScoreService.java

@@ -10,7 +10,7 @@ import java.util.List;
 public interface IArchiveExpertScoreService extends BaseService<ArchiveExpertScore> {
 public interface IArchiveExpertScoreService extends BaseService<ArchiveExpertScore> {
 
 
     // 审批成功,保存基础评分信息
     // 审批成功,保存基础评分信息
-    void saveBaseScoreInfo(Long projectId);
+    void saveBaseScoreInfo(Long projectId,Long conclusionId);
 
 
     List<ArchiveExpertScore> getItemByUnit(Long projectId, Integer unitType);
     List<ArchiveExpertScore> getItemByUnit(Long projectId, Integer unitType);
 }
 }

+ 4 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java

@@ -130,17 +130,17 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 
 
 	Map<String,String> userInspectStats(Long projectId);
 	Map<String,String> userInspectStats(Long projectId);
 
 
-	void updateInspectStatus(Long archiveId,Long projectId);
+	void updateInspectStatus(Long archiveId,Long projectId,Long conclusionId);
 
 
 	void saveInspect(ExpertInspection inspection);
 	void saveInspect(ExpertInspection inspection);
 
 
-	IPage<ExpertInspectionVO> getUserInspectInfo(Query query, Long projectId);
+	IPage<ExpertInspectionVO> getUserInspectInfo(Query query, Long projectId, Long conclusionId);
 
 
-	IPage<ExpertInspectionVO> getUserInspectInfo2(Query query, Long projectId);
+	IPage<ExpertInspectionVO> getUserInspectInfo2(Query query, Long projectId,Long conclusionId);
 
 
     ProjectInspectStatVO projectInspectStat(Long projectId);
     ProjectInspectStatVO projectInspectStat(Long projectId);
 
 
-	ExpertInspectionVO getArchiveFileOpinion(Long fileId, Long projectId);
+	ExpertInspectionVO getArchiveFileOpinion(Long fileId, Long projectId,Long conclusionId);
 
 
 
 
     ArchiveConclusion getArchiveConclusion(Long projectId);
     ArchiveConclusion getArchiveConclusion(Long projectId);

+ 1 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IExpertInspectionService.java

@@ -11,5 +11,5 @@ import java.util.List;
 public interface IExpertInspectionService extends BaseService<ExpertInspection> {
 public interface IExpertInspectionService extends BaseService<ExpertInspection> {
 
 
 
 
-    List<ExpertInspection> getListByFileId(Long fileId, Long projectId);
+    List<ExpertInspection> getListByFileId(Long fileId, Long projectId,Long conclusionId);
 }
 }

+ 73 - 10
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveExpertConclusionServiceImpl.java

@@ -11,8 +11,10 @@ import org.springblade.archive.mapper.ArchiveExpertConclusionMapper;
 import org.springblade.archive.mapper.ArchiveExpertScoreMapper;
 import org.springblade.archive.mapper.ArchiveExpertScoreMapper;
 import org.springblade.archive.service.IArchiveExpertConclusionService;
 import org.springblade.archive.service.IArchiveExpertConclusionService;
 import org.springblade.archive.service.IArchiveExpertScoreService;
 import org.springblade.archive.service.IArchiveExpertScoreService;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.feign.ProjectClient;
 import org.springblade.manager.feign.ProjectClient;
@@ -31,22 +33,32 @@ public class ArchiveExpertConclusionServiceImpl extends BaseServiceImpl<ArchiveE
 
 
     @Override
     @Override
     @Transactional
     @Transactional
-    public R saveBaseTableInfo(Long projectId, String appUrl) {
+    public R saveBaseTableInfo(Long projectId, String appUrl,Long taskId) {
+        //判断当前项目下是否存在抽检中的数据
+        long count = this.count(new LambdaUpdateWrapper<ArchiveExpertConclusion>()
+                .eq(ArchiveExpertConclusion::getProjectId, projectId)
+                .eq(ArchiveExpertConclusion::getStatus, 1));
+        if (count > 0){
+            return R.fail("操作失败,上次验收还未完成");
+        }
         //保存表单基础信息
         //保存表单基础信息
         ArchiveExpertConclusion conclusion = new ArchiveExpertConclusion();
         ArchiveExpertConclusion conclusion = new ArchiveExpertConclusion();
+        Long id = SnowFlakeUtil.getId();
+        conclusion.setId(id);
         conclusion.setProjectId(projectId);
         conclusion.setProjectId(projectId);
         conclusion.setAppUrl(appUrl);
         conclusion.setAppUrl(appUrl);
         conclusion.setIsBuildScore(0);
         conclusion.setIsBuildScore(0);
         conclusion.setStatus(1);
         conclusion.setStatus(1);
-        conclusion.setApproveStatus(0);
+        conclusion.setTaskId(taskId);
         ProjectInfo info = projectClient.getById(projectId + "");
         ProjectInfo info = projectClient.getById(projectId + "");
         if (info == null){
         if (info == null){
             return R.fail("获取项目信息失败");
             return R.fail("获取项目信息失败");
         }
         }
         conclusion.setTableTitle(info.getProjectName()+"项目档案验收报告");
         conclusion.setTableTitle(info.getProjectName()+"项目档案验收报告");
+        conclusion.setGeneralSituation(info.getProjectGist());
         this.save(conclusion);
         this.save(conclusion);
         //保存评分基础信息
         //保存评分基础信息
-        scoreService.saveBaseScoreInfo(projectId);
+        scoreService.saveBaseScoreInfo(projectId,id);
         return R.data("保存成功");
         return R.data("保存成功");
     }
     }
 
 
@@ -105,10 +117,10 @@ public class ArchiveExpertConclusionServiceImpl extends BaseServiceImpl<ArchiveE
     }
     }
 
 
     /**
     /**
-     * 在线验收-查看验收报告
+     * 在线验收-获取结论
      */
      */
     @Override
     @Override
-    public String getTable(Long projectId) {
+    public ArchiveExpertConclusion getTable(Long projectId) {
         //获取最新的最新的一期验收
         //获取最新的最新的一期验收
         ArchiveExpertConclusion one = this.getOne(new LambdaUpdateWrapper<ArchiveExpertConclusion>()
         ArchiveExpertConclusion one = this.getOne(new LambdaUpdateWrapper<ArchiveExpertConclusion>()
                 .eq(ArchiveExpertConclusion::getProjectId, projectId)
                 .eq(ArchiveExpertConclusion::getProjectId, projectId)
@@ -118,10 +130,7 @@ public class ArchiveExpertConclusionServiceImpl extends BaseServiceImpl<ArchiveE
         if (one == null){
         if (one == null){
             throw new ServiceException("暂无验收档案信息,请检查是否申请过验收");
             throw new ServiceException("暂无验收档案信息,请检查是否申请过验收");
         }
         }
-        if (StringUtils.isBlank(one.getTableUrl())){
-            throw new ServiceException("当前在线验收还未生成报告");
-        }
-        return one.getTableUrl();
+        return one;
     }
     }
 
 
     /**
     /**
@@ -153,10 +162,64 @@ public class ArchiveExpertConclusionServiceImpl extends BaseServiceImpl<ArchiveE
                 .last("limit 1"));
                 .last("limit 1"));
         //如果为空代表没有申请过,返回true
         //如果为空代表没有申请过,返回true
         if (one == null){
         if (one == null){
-            throw new ServiceException("当前没有申请验收信息,无法修改");
+            throw new ServiceException("当前项目没有申请验收信息,无法修改");
         }
         }
         one.setIsBuildScore(isSelect);
         one.setIsBuildScore(isSelect);
         this.updateById(one);
         this.updateById(one);
     }
     }
+
+    /**
+     * 在线验收-下一步编写报告,校验
+     */
+    @Override
+    public Boolean checkTable(Long projectId) {
+        //获取最新的最新的一期验收
+        ArchiveExpertConclusion one = this.getOne(new LambdaUpdateWrapper<ArchiveExpertConclusion>()
+                .eq(ArchiveExpertConclusion::getProjectId, projectId)
+                .orderByDesc(ArchiveExpertConclusion::getCreateTime)
+                .last("limit 1"));
+        //如果为空代表没有申请过,返回true
+        if (one == null){
+            throw new ServiceException("当前项目没有申请验收信息,无法编写报告");
+        }
+        return true;
+    }
+
+    /**
+     * 编写结论-确认提交
+     */
+    @Override
+    public void submitTable(ArchiveExpertConclusion conclusion) {
+
+    }
+
+    @Override
+    public Boolean checkSubmit(Long projectId) {
+        Long userId = AuthUtil.getUserId();
+        //判断当前用户职位是否为专家组长,专家组长允许提交
+        String userRole = AuthUtil.getUserRole();
+        if ("专家组长".equals(userRole)){
+            return true;
+        }else {
+            return false;
+        }
+    }
+
+    /**
+     * 在线验收-获取当前期在线验收id
+     */
+    @Override
+    public Long getCurrentId(Long projectId) {
+        //获取最新的最新的一期验收
+        ArchiveExpertConclusion one = this.getOne(new LambdaUpdateWrapper<ArchiveExpertConclusion>()
+                .eq(ArchiveExpertConclusion::getProjectId, projectId)
+                .orderByDesc(ArchiveExpertConclusion::getCreateTime)
+                .last("limit 1"));
+        //如果为空代表没有申请过,返回true
+        if (one == null){
+            throw new ServiceException("当前项目没有申请验收信息,请联系管理员");
+        }
+        return one.getId();
+    }
 }
 }
 
 

+ 10 - 5
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveExpertScoreServiceImpl.java

@@ -2,6 +2,7 @@ package org.springblade.archive.service.impl;
 
 
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springblade.archive.entity.ArchiveExpertConclusion;
 import org.springblade.archive.entity.ArchiveExpertScore;
 import org.springblade.archive.entity.ArchiveExpertScore;
 import org.springblade.archive.entity.ExpertInspection;
 import org.springblade.archive.entity.ExpertInspection;
 import org.springblade.archive.mapper.ArchiveExpertScoreMapper;
 import org.springblade.archive.mapper.ArchiveExpertScoreMapper;
@@ -19,14 +20,14 @@ public class ArchiveExpertScoreServiceImpl extends BaseServiceImpl<ArchiveExpert
 
 
 
 
     @Override
     @Override
-    public void saveBaseScoreInfo(Long projectId) {
+    public void saveBaseScoreInfo(Long projectId,Long conclusionId) {
         List<ArchiveExpertScore> list = new ArrayList<>();
         List<ArchiveExpertScore> list = new ArrayList<>();
         //业主
         //业主
-        list.add(new ArchiveExpertScore(projectId,1,"业主评分项1",10,0,10,0));
+        list.add(new ArchiveExpertScore(projectId,conclusionId,1,"业主评分项1",10,0,10,0));
         //监理
         //监理
-        list.add(new ArchiveExpertScore(projectId,2,"监理评分项1",10,0,10,0));
+        list.add(new ArchiveExpertScore(projectId,conclusionId,2,"监理评分项1",10,0,10,0));
         //施工
         //施工
-        list.add(new ArchiveExpertScore(projectId,3,"施工评分项1",10,0,10,0));
+        list.add(new ArchiveExpertScore(projectId,conclusionId,3,"施工评分项1",10,0,10,0));
         this.saveBatch(list);
         this.saveBatch(list);
     }
     }
 
 
@@ -35,9 +36,13 @@ public class ArchiveExpertScoreServiceImpl extends BaseServiceImpl<ArchiveExpert
      */
      */
     @Override
     @Override
     public List<ArchiveExpertScore> getItemByUnit(Long projectId, Integer unitType) {
     public List<ArchiveExpertScore> getItemByUnit(Long projectId, Integer unitType) {
+        //获取当前结论
+        ArchiveExpertConclusion conclusion = baseMapper.getConclusion(projectId);
+        
         List<ArchiveExpertScore> list = this.list(new LambdaQueryWrapper<ArchiveExpertScore>()
         List<ArchiveExpertScore> list = this.list(new LambdaQueryWrapper<ArchiveExpertScore>()
                 .eq(ArchiveExpertScore::getProjectId, projectId)
                 .eq(ArchiveExpertScore::getProjectId, projectId)
-                .eq(ArchiveExpertScore::getUnitType, unitType));
+                .eq(ArchiveExpertScore::getUnitType, unitType)
+                .eq(ArchiveExpertScore::getConclusionId,conclusion.getId()));
         return list;
         return list;
     }
     }
 }
 }

+ 24 - 15
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -3095,11 +3095,12 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	 */
 	 */
 	@Override
 	@Override
 	@Transactional
 	@Transactional
-	public void updateInspectStatus(Long archiveId,Long projectId) {
+	public void updateInspectStatus(Long archiveId,Long projectId,Long conclusionId) {
 		//查看当前档案是否存在有意见的数据,存在则什么都不修改,不存在则修改已抽检,合格
 		//查看当前档案是否存在有意见的数据,存在则什么都不修改,不存在则修改已抽检,合格
 		long count2 = inspectionService.count(new LambdaQueryWrapper<ExpertInspection>()
 		long count2 = inspectionService.count(new LambdaQueryWrapper<ExpertInspection>()
 				.eq(ExpertInspection::getIsPass, 0)
 				.eq(ExpertInspection::getIsPass, 0)
-				.eq(ExpertInspection::getArchiveId, archiveId));
+				.eq(ExpertInspection::getArchiveId, archiveId)
+				.eq(ExpertInspection::getConclusionId,conclusionId));
 		//修改档案抽检状态
 		//修改档案抽检状态
 		if (count2 == 0) {
 		if (count2 == 0) {
 			this.update(new LambdaUpdateWrapper<ArchivesAuto>()
 			this.update(new LambdaUpdateWrapper<ArchivesAuto>()
@@ -3111,7 +3112,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		Long userId = AuthUtil.getUserId();
 		Long userId = AuthUtil.getUserId();
 		long count = inspectionService.count(new LambdaQueryWrapper<ExpertInspection>()
 		long count = inspectionService.count(new LambdaQueryWrapper<ExpertInspection>()
 						.eq(ExpertInspection::getExpertId, userId)
 						.eq(ExpertInspection::getExpertId, userId)
-						.eq(ExpertInspection::getArchiveId, archiveId));
+						.eq(ExpertInspection::getArchiveId, archiveId)
+						.eq(ExpertInspection::getConclusionId,conclusionId));
 		if (count == 0){
 		if (count == 0){
 			String userName = AuthUtil.getNickName();
 			String userName = AuthUtil.getNickName();
 			//获取档案信息,如果状态未未查阅则修改
 			//获取档案信息,如果状态未未查阅则修改
@@ -3132,6 +3134,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			inspection.setUnitType(unitType);
 			inspection.setUnitType(unitType);
 			inspection.setArchiveId(archiveId);
 			inspection.setArchiveId(archiveId);
 			inspection.setArchiveName(archive.getName());
 			inspection.setArchiveName(archive.getName());
+			inspection.setConclusionId(conclusionId);
 			inspectionService.save(inspection);
 			inspectionService.save(inspection);
 		}
 		}
 
 
@@ -3179,18 +3182,21 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			ExpertInspection one = inspectionService.getOne(new LambdaQueryWrapper<ExpertInspection>()
 			ExpertInspection one = inspectionService.getOne(new LambdaQueryWrapper<ExpertInspection>()
 					.eq(ExpertInspection::getExpertId, userId)
 					.eq(ExpertInspection::getExpertId, userId)
 					.eq(ExpertInspection::getArchiveId, archive.getId())
 					.eq(ExpertInspection::getArchiveId, archive.getId())
-					.eq(ExpertInspection::getIsPass, 1));
+					.eq(ExpertInspection::getIsPass, 1)
+					.eq(ExpertInspection::getConclusionId, inspection.getConclusionId()));
 			if (one == null) {
 			if (one == null) {
 				//先删除当前专家对当前案卷当前文件的意见
 				//先删除当前专家对当前案卷当前文件的意见
 				inspectionService.remove(new LambdaQueryWrapper<ExpertInspection>()
 				inspectionService.remove(new LambdaQueryWrapper<ExpertInspection>()
 						.eq(ExpertInspection::getExpertId, userId)
 						.eq(ExpertInspection::getExpertId, userId)
 						.eq(ExpertInspection::getArchiveId, inspection.getArchiveId())
 						.eq(ExpertInspection::getArchiveId, inspection.getArchiveId())
-						.eq(ExpertInspection::getFileId, inspection.getFileId()));
+						.eq(ExpertInspection::getFileId, inspection.getFileId())
+						.eq(ExpertInspection::getConclusionId, inspection.getConclusionId()));
 				//判断当前档案是否存在其他意见,有则直接跳过
 				//判断当前档案是否存在其他意见,有则直接跳过
 				long count3 = inspectionService.count(new LambdaQueryWrapper<ExpertInspection>()
 				long count3 = inspectionService.count(new LambdaQueryWrapper<ExpertInspection>()
 						.eq(ExpertInspection::getExpertId, userId)
 						.eq(ExpertInspection::getExpertId, userId)
 						.eq(ExpertInspection::getArchiveId, archive.getId())
 						.eq(ExpertInspection::getArchiveId, archive.getId())
-						.eq(ExpertInspection::getIsPass, 0));
+						.eq(ExpertInspection::getIsPass, 0)
+						.eq(ExpertInspection::getConclusionId, inspection.getConclusionId()));
 				if (count3 == 0) {
 				if (count3 == 0) {
 					//没有就直接保存合格
 					//没有就直接保存合格
 					inspection.setFileId(null);
 					inspection.setFileId(null);
@@ -3203,12 +3209,14 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			inspectionService.remove(new LambdaQueryWrapper<ExpertInspection>()
 			inspectionService.remove(new LambdaQueryWrapper<ExpertInspection>()
 					.eq(ExpertInspection::getExpertId, userId)
 					.eq(ExpertInspection::getExpertId, userId)
 					.eq(ExpertInspection::getArchiveId, inspection.getArchiveId())
 					.eq(ExpertInspection::getArchiveId, inspection.getArchiveId())
-					.eq(ExpertInspection::getIsPass, 1));
+					.eq(ExpertInspection::getIsPass, 1)
+					.eq(ExpertInspection::getConclusionId, inspection.getConclusionId()));
 			//再去查看意见表是否存在对当前档案当前文件的意见
 			//再去查看意见表是否存在对当前档案当前文件的意见
 			ExpertInspection one = inspectionService.getOne(new LambdaQueryWrapper<ExpertInspection>()
 			ExpertInspection one = inspectionService.getOne(new LambdaQueryWrapper<ExpertInspection>()
 					.eq(ExpertInspection::getExpertId, userId)
 					.eq(ExpertInspection::getExpertId, userId)
 					.eq(ExpertInspection::getArchiveId, inspection.getArchiveId())
 					.eq(ExpertInspection::getArchiveId, inspection.getArchiveId())
-					.eq(ExpertInspection::getFileId, inspection.getFileId()));
+					.eq(ExpertInspection::getFileId, inspection.getFileId())
+					.eq(ExpertInspection::getConclusionId, inspection.getConclusionId()));
 			//如果不存在数据,然后保存
 			//如果不存在数据,然后保存
 			if (one == null) {
 			if (one == null) {
 				inspectionService.save(inspection);
 				inspectionService.save(inspection);
@@ -3222,7 +3230,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//查询当前档案的所有不合格专家意见
 		//查询当前档案的所有不合格专家意见
 		long count = inspectionService.count(new LambdaQueryWrapper<ExpertInspection>()
 		long count = inspectionService.count(new LambdaQueryWrapper<ExpertInspection>()
 				.eq(ExpertInspection::getArchiveId, archive.getId())
 				.eq(ExpertInspection::getArchiveId, archive.getId())
-				.eq(ExpertInspection::getIsPass, 0));
+				.eq(ExpertInspection::getIsPass, 0)
+				.eq(ExpertInspection::getConclusionId, inspection.getConclusionId()));
 		if (count > 0){
 		if (count > 0){
 			//如果有则修改档案不合格
 			//如果有则修改档案不合格
 			archive.setUpdateStatus(1);
 			archive.setUpdateStatus(1);
@@ -3237,17 +3246,17 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	 * 在线验收-抽检记录
 	 * 在线验收-抽检记录
 	 */
 	 */
 	@Override
 	@Override
-	public IPage<ExpertInspectionVO> getUserInspectInfo(Query query, Long projectId) {
+	public IPage<ExpertInspectionVO> getUserInspectInfo(Query query, Long projectId, Long conclusionId) {
 		Long userId = AuthUtil.getUserId();
 		Long userId = AuthUtil.getUserId();
 		IPage<ExpertInspectionVO> page = new Page<>(query.getCurrent(),query.getSize());
 		IPage<ExpertInspectionVO> page = new Page<>(query.getCurrent(),query.getSize());
-		return baseMapper.getUserInspectInfo(page,projectId,userId);
+		return baseMapper.getUserInspectInfo(page,projectId,userId,conclusionId);
 	}
 	}
 
 
 	/**
 	/**
 	 * 在线验收-抽检记录-汇总
 	 * 在线验收-抽检记录-汇总
 	 */
 	 */
 	@Override
 	@Override
-	public IPage<ExpertInspectionVO> getUserInspectInfo2(Query query, Long projectId) {
+	public IPage<ExpertInspectionVO> getUserInspectInfo2(Query query, Long projectId,Long conclusionId) {
 		Long userId = AuthUtil.getUserId();
 		Long userId = AuthUtil.getUserId();
 		//判断当前用户职位是否为专家组长,专家组长查看所有
 		//判断当前用户职位是否为专家组长,专家组长查看所有
 		String userRole = AuthUtil.getUserRole();
 		String userRole = AuthUtil.getUserRole();
@@ -3255,7 +3264,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			userId = null;
 			userId = null;
 		}
 		}
 		IPage<ExpertInspectionVO> page = new Page<>(query.getCurrent(),query.getSize());
 		IPage<ExpertInspectionVO> page = new Page<>(query.getCurrent(),query.getSize());
-		return baseMapper.getUserInspectInfo(page,projectId,userId);
+		return baseMapper.getUserInspectInfo(page,projectId,userId,conclusionId);
 	}
 	}
 
 
 	/**
 	/**
@@ -3360,12 +3369,12 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	 * 在线验收-获取档案文件抽检意见
 	 * 在线验收-获取档案文件抽检意见
 	 */
 	 */
 	@Override
 	@Override
-	public ExpertInspectionVO getArchiveFileOpinion(Long fileId, Long projectId) {
+	public ExpertInspectionVO getArchiveFileOpinion(Long fileId, Long projectId,Long conclusionId) {
 		Long userId = AuthUtil.getUserId();
 		Long userId = AuthUtil.getUserId();
 		String userName = AuthUtil.getNickName();
 		String userName = AuthUtil.getNickName();
 		ExpertInspectionVO vo = new ExpertInspectionVO();
 		ExpertInspectionVO vo = new ExpertInspectionVO();
 		//获取意见表里当前文件相关意见
 		//获取意见表里当前文件相关意见
-		List<ExpertInspection> list = inspectionService.getListByFileId(fileId,projectId);
+		List<ExpertInspection> list = inspectionService.getListByFileId(fileId,projectId,conclusionId);
 		if (list != null && list.size() > 0){
 		if (list != null && list.size() > 0){
 			StringBuilder str = new StringBuilder();
 			StringBuilder str = new StringBuilder();
 			for (ExpertInspection inspection : list) {
 			for (ExpertInspection inspection : list) {

+ 2 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ExpertInspectionServiceImpl.java

@@ -15,8 +15,8 @@ public class ExpertInspectionServiceImpl extends BaseServiceImpl<ExpertInspectio
 
 
 
 
     @Override
     @Override
-    public List<ExpertInspection> getListByFileId(Long fileId, Long projectId) {
-        return baseMapper.getListByFileId(fileId,projectId);
+    public List<ExpertInspection> getListByFileId(Long fileId, Long projectId,Long conclusionId) {
+        return baseMapper.getListByFileId(fileId,projectId,conclusionId);
     }
     }
 }
 }
 
 

+ 6 - 3
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -706,9 +706,12 @@ public class TaskController extends BladeController {
                                     }
                                     }
                                 }
                                 }
                                 //创建报表基本信息,报表中会自动创建评分基础信息
                                 //创建报表基本信息,报表中会自动创建评分基础信息
-                                R r = conclusionClient.saveBaseTableInfo(Long.parseLong(task.getProjectId()), task.getAttachmentPdfUrl());
-                                if (r == null || !"保存成功".equals(r.getData())){
-                                    throw new ServiceException("保存报表基本信息失败");
+                                R r = conclusionClient.saveBaseTableInfo(Long.parseLong(task.getProjectId()), task.getAttachmentPdfUrl(),task.getId());
+                                if (r == null ){
+                                    throw new ServiceException("调用档案服务失败");
+                                }
+                                if (!"保存成功".equals(r.getData())){
+                                    throw new ServiceException(r.getMsg());
                                 }
                                 }
                             }
                             }
                             return R.data(true);
                             return R.data(true);

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java

@@ -502,8 +502,8 @@ public class ArchiveTreeContractController extends BladeController {
     @ApiImplicitParams(value = {
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "projectId", value = "项目id")
             @ApiImplicitParam(name = "projectId", value = "项目id")
     })
     })
-    public R<Boolean> startInspect(@RequestParam Long projectId) {
-        return R.data(archiveTreeContractService.startInspect(projectId));
+    public R<Boolean> startInspect(@RequestParam Long projectId,@RequestParam Integer type) {
+        return R.data(archiveTreeContractService.startInspect(projectId,type));
     }
     }
 
 
 
 

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java

@@ -19,6 +19,7 @@ package org.springblade.manager.mapper;
 
 
 import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
+import org.springblade.archive.entity.ArchiveExpertConclusion;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.entity.InformationQuery;
 import org.springblade.business.entity.InformationQuery;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.entity.ArchiveTreeContract;
@@ -128,4 +129,6 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
     List<ArchiveTreeContract> getSelectNodes(@Param("ids") List<Long> longs);
     List<ArchiveTreeContract> getSelectNodes(@Param("ids") List<Long> longs);
 
 
     List<MyInspectTreeVO> MyLazyTree(@Param("parentId") Long parentId,@Param("projectId") Long projectId,@Param("userId") Long userId);
     List<MyInspectTreeVO> MyLazyTree(@Param("parentId") Long parentId,@Param("projectId") Long projectId,@Param("userId") Long userId);
+
+    ArchiveExpertConclusion getNewTable(@Param("projectId") Long projectId);
 }
 }

+ 6 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -607,6 +607,12 @@
         and FIND_IN_SET(#{userId},d.expert_id)
         and FIND_IN_SET(#{userId},d.expert_id)
         ORDER BY d.sort
         ORDER BY d.sort
     </select>
     </select>
+    <select id="getNewTable" resultType="org.springblade.archive.entity.ArchiveExpertConclusion">
+        select * from u_archive_expert_conclusion
+        WHERE is_deleted = 0 and project_id = #{projectId}
+        order by create_time DESC
+        limit 1
+    </select>
 
 
 
 
     <update id="updateAllSonNodeIdsForArchiveAutoRule">
     <update id="updateAllSonNodeIdsForArchiveAutoRule">

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeContractService.java

@@ -131,5 +131,5 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
 
 
     List<MyInspectTreeVO> lazyTree(Long parentId, Long projectId);
     List<MyInspectTreeVO> lazyTree(Long parentId, Long projectId);
 
 
-    Boolean startInspect(Long projectId);
+    Boolean startInspect(Long projectId,Integer type);
 }
 }

+ 26 - 10
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -22,7 +22,9 @@ import com.mixsmart.utils.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
+import org.springblade.archive.entity.ArchiveExpertConclusion;
 import org.springblade.archive.feign.ArchiveAutoClient;
 import org.springblade.archive.feign.ArchiveAutoClient;
+import org.springblade.archive.vo.UpdateExpertVO;
 import org.springblade.business.feign.ArchiveFileClient;
 import org.springblade.business.feign.ArchiveFileClient;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.BladeUser;
@@ -1464,7 +1466,10 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		//保存所有节点
 		//保存所有节点
 		this.updateBatchById(list);
 		this.updateBatchById(list);
 		//修改节点下所有档案,并保存
 		//修改节点下所有档案,并保存
-		R<Boolean> booleanR = archiveAutoClient.batchUpdateExpertId(userId, longs);
+		UpdateExpertVO vo = new UpdateExpertVO();
+		vo.setUserid(userId);
+		vo.setIds(ids);
+		R<Boolean> booleanR = archiveAutoClient.batchUpdateExpertId(vo);
 		if (booleanR.getData() == null || booleanR.getData() != true){
 		if (booleanR.getData() == null || booleanR.getData() != true){
 			throw new ServiceException("为档案绑定专家失败");
 			throw new ServiceException("为档案绑定专家失败");
 		}
 		}
@@ -1503,7 +1508,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	 * 在线验收-开始抽检
 	 * 在线验收-开始抽检
 	 */
 	 */
 	@Override
 	@Override
-	public Boolean startInspect(Long projectId) {
+	public Boolean startInspect(Long projectId,Integer type) {
 		//获取当前项目首节点
 		//获取当前项目首节点
 		ArchiveTreeContract one = this.getOne(new LambdaQueryWrapper<ArchiveTreeContract>()
 		ArchiveTreeContract one = this.getOne(new LambdaQueryWrapper<ArchiveTreeContract>()
 				.eq(ArchiveTreeContract::getProjectId, projectId)
 				.eq(ArchiveTreeContract::getProjectId, projectId)
@@ -1511,19 +1516,30 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		if (one == null){
 		if (one == null){
 			throw new ServiceException("未找到当前项目首节点");
 			throw new ServiceException("未找到当前项目首节点");
 		}
 		}
+
+		//获取项目最新的一条结论,如果不存在则提示
+		ArchiveExpertConclusion conclusion = baseMapper.getNewTable(projectId);
+		if (conclusion == null){
+			throw new ServiceException("当前项目还未申请在线验收");
+		}
+
 		BladeUser user = AuthUtil.getUser();
 		BladeUser user = AuthUtil.getUser();
 		String roleId = user.getRoleId();
 		String roleId = user.getRoleId();
 		//判断当前用户是否为专家
 		//判断当前用户是否为专家
-		if (roleId.contains("1656191696348082177") || roleId.contains("1656191770880864257")){
-			//判断是否存在当前专家id
-			if (StringUtil.isNotBlank(one.getExpertId()) && one.getExpertId().contains(user.getUserId()+"")){
-				return false;
-			}else {
-				return true;
-			}
-		}else {
+		if (!"1656191696348082177,1656191770880864257".contains(roleId)){
 			throw new ServiceException("当前用户不是专家,不能抽检");
 			throw new ServiceException("当前用户不是专家,不能抽检");
 		}
 		}
+		//判断当前结论的状态是否已经完成
+		if (type ==  1){
+			if (conclusion.getStatus() == 2){
+				throw new ServiceException("当前抽检已经生成结论,请直接点击编辑结论");
+			}
+		}
+		//判断是否存在当前专家id
+		if (StringUtil.isNotBlank(one.getExpertId()) && one.getExpertId().contains(user.getUserId()+"")){
+			return false;
+		}
+		return true;
 
 
 	}
 	}