ソースを参照

Merge remote-tracking branch 'origin/master' into master

yangyj 1 年間 前
コミット
af64105a1f
39 ファイル変更987 行追加163 行削除
  1. 6 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/ArchiveFile.java
  2. 1 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java
  3. 1 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/InformationQueryClient.java
  4. 22 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/RoutingInspectionDTO.java
  5. 6 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTreeContract.java
  6. 54 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/InspectionRectify.java
  7. 55 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/RoutingInspection.java
  8. 1 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeContractClient.java
  9. 5 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ArchiveTreeContractVO2.java
  10. 28 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RoutingInspectionVO.java
  11. 23 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RoutingInspectionVO2.java
  12. 2 3
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileTaskController.java
  13. 17 13
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java
  14. 5 3
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  15. 2 2
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java
  16. 3 2
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/InformationQueryClientImpl.java
  17. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java
  18. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml
  19. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.java
  20. 2 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml
  21. 54 4
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java
  22. 130 63
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  23. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java
  24. 33 30
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  25. 19 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/InspectionRectifyController.java
  26. 145 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/RoutingInspectionController.java
  27. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeContractImpl.java
  28. 13 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/InspectionRectifyMapper.java
  29. 9 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/InspectionRectifyMapper.xml
  30. 14 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/RoutingInspectionMapper.java
  31. 20 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/RoutingInspectionMapper.xml
  32. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeContractService.java
  33. 12 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IInspectionRectifyService.java
  34. 36 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IRoutingInspectionService.java
  35. 48 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArTreeContractInitServiceImpl.java
  36. 11 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java
  37. 33 19
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java
  38. 22 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/InspectionRectifyServiceImpl.java
  39. 147 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/RoutingInspectionServiceImpl.java

+ 6 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/ArchiveFile.java

@@ -277,4 +277,10 @@ public class ArchiveFile extends BaseEntity {
     //整改情况,0,无整改,1 待整改,2 已整改
     @ApiModelProperty("整改情况")
     private Integer rectification;
+
+    /**
+     * 类型,1施工 2监理
+     */
+    @ApiModelProperty("类型,1施工 2监理")
+    private Integer classify;
 }

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java

@@ -146,7 +146,7 @@ public interface ArchiveFileClient {
     void updateArchiveFile(@RequestBody List<ArchiveFile> files);
 
     @PostMapping(API_PREFIX + "/getListByContractId")
-    List<ArchiveFile> getListByContractId(@RequestParam Long contractId);
+    List<ArchiveFile> getListByContractId(@RequestParam Long contractId,@RequestParam Integer classify);
 
     @PostMapping(API_PREFIX + "/updateById2")
     void updateById2(@RequestBody ArchiveFile archiveFile);

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/InformationQueryClient.java

@@ -89,7 +89,7 @@ public interface InformationQueryClient {
     List<QueryProcessDataVO> getNodeChildTabColsAllByTabName(@RequestParam String initTabName);
 
     @PostMapping(API_PREFIX + "/getInformationByContractId")
-    List<InformationQuery> getInformationByContractId(@RequestParam Long contractId);
+    List<InformationQuery> getInformationByContractId(@RequestParam Long contractId,@RequestParam Integer classify);
 
     @PostMapping(API_PREFIX + "/getInformationByContractId1")
     void getInformationByContractId1(Long contractId);

+ 22 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/RoutingInspectionDTO.java

@@ -0,0 +1,22 @@
+package org.springblade.manager.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.manager.entity.InspectionRectify;
+import org.springblade.manager.entity.RoutingInspection;
+
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/11/2 14:19
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class RoutingInspectionDTO extends RoutingInspection {
+
+    @ApiModelProperty(value = "检查项目集合")
+    private List<InspectionRectify> list;
+}

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTreeContract.java

@@ -222,6 +222,11 @@ public class ArchiveTreeContract extends BaseEntity {
     //案卷后缀
     private String archiveNameSuffix;
 
+    /**
+     * 类型,1施工 2监理
+     */
+    private Integer classify;
+
 
     public ArchiveTreeContract() {
     }
@@ -337,6 +342,7 @@ public class ArchiveTreeContract extends BaseEntity {
         this.archiveAutoGroupId = archiveTree.getArchiveAutoGroupId();
         this.archiveAutoGroupSelect = archiveTree.getArchiveAutoGroupSelect();
         this.isUploadFileDisplayConfigurationTree = archiveTree.getIsDisplayTree();
+        this.classify = archiveTree.getClassify();
     }
 
 

+ 54 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/InspectionRectify.java

@@ -0,0 +1,54 @@
+package org.springblade.manager.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+import java.time.LocalDate;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/11/2 13:38
+ **/
+@Data
+@TableName("m_inspection_rectify")
+@EqualsAndHashCode(callSuper = true)
+public class InspectionRectify extends BaseEntity {
+
+    @ApiModelProperty(value = "项目名称")
+    private Long projectId;
+
+    @ApiModelProperty(value = "巡检id")
+    private Long inspectId;
+
+    @ApiModelProperty(value = "检查项目")
+    private String inspectProject;
+
+    @ApiModelProperty(value = "检查内容")
+    private String inspectContent;
+
+    @ApiModelProperty(value = "扣分标准")
+    private String deductionStandard;
+
+    @ApiModelProperty(value = "检查人名称")
+    private String inspectUserName;
+
+    @ApiModelProperty(value = "检查图片")
+    private String inspectPdfUrl;
+
+    @ApiModelProperty(value = "整改反馈")
+    private String rectifyFeedback;
+
+    @ApiModelProperty(value = "整改附件")
+    private String rectifyAttachment;
+
+    @ApiModelProperty(value = "整改图片")
+    private String rectifyPdfUrl;
+
+
+
+}

+ 55 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/RoutingInspection.java

@@ -0,0 +1,55 @@
+package org.springblade.manager.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/11/2 13:38
+ **/
+@Data
+@TableName("m_routing_inspection")
+@EqualsAndHashCode(callSuper = true)
+public class RoutingInspection extends BaseEntity {
+
+    @ApiModelProperty(value = "项目名称")
+    private Long projectId;
+
+    @ApiModelProperty(value = "检查名称")
+    private String inspectName;
+
+    @ApiModelProperty(value = "巡检类别 1安全巡检2质量巡检")
+    private Integer inspectType;
+
+    @ApiModelProperty(value = "是否需要整改 1需要2不需要")
+    private Integer isRectify;
+
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "整改日期")
+    private LocalDate rectifyDate;
+
+    @ApiModelProperty(value = "整改人")
+    private Long rectifyUser;
+
+    @ApiModelProperty(value = "检查部位")
+    private String inspectLocation;
+
+    @ApiModelProperty(value = "复核检查状态 1未检查2检查不通过3检查通过")
+    private Integer reviewInspectStatus;
+
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "实际整改日期")
+    private LocalDate actualRectifyDate;
+
+    @ApiModelProperty(value = "是否提交整改 1已整改2未整改")
+    private String submitRectify;
+
+}

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeContractClient.java

@@ -49,7 +49,7 @@ public interface ArchiveTreeContractClient {
     ArchiveTreeContract getArchiveTreeContractByContractId(@RequestParam Long contractId);
 
     @PostMapping(API_PREFIX + "/writeBusinessData")
-    Integer writeBusinessData(@RequestParam Long keyId,@RequestParam Long contractId,@RequestParam String formDataId);
+    Integer writeBusinessData(@RequestParam Long keyId,@RequestParam Long contractId,@RequestParam String formDataId,@RequestParam Integer classify);
 
     @PostMapping(API_PREFIX + "/getMeasurementPeriodNode")
     public ArchiveTreeContract getMeasurementPeriodNode(@RequestParam String projectName,@RequestParam String contractName,

+ 5 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ArchiveTreeContractVO2.java

@@ -232,6 +232,11 @@ public class ArchiveTreeContractVO2 implements INodeEx<ArchiveTreeContractVO2> {
 
     private Integer treeNumber;
 
+    /**
+     * 类型,1施工 2监理
+     */
+    private Integer classify;
+
     public String toString() {
         return "TreeNode(parentId=" + this.getParentId()
                 + ",ancestors" + this.getAncestors()

+ 28 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RoutingInspectionVO.java

@@ -0,0 +1,28 @@
+package org.springblade.manager.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.manager.entity.RoutingInspection;
+
+/**
+ * @Param
+ * @Author wangwl 分页显示
+ * @Date 2023/11/2 14:44
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class RoutingInspectionVO extends RoutingInspection {
+
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+
+    @ApiModelProperty(value = "检查类别名称")
+    private String inspectTypeName;
+
+    @ApiModelProperty(value = "复核检查状态名称")
+    private String reviewInspectStatusName;
+
+    @ApiModelProperty(value = "是否需要整改名称")
+    private String isRectifyName;
+}

+ 23 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RoutingInspectionVO2.java

@@ -0,0 +1,23 @@
+package org.springblade.manager.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.manager.entity.InspectionRectify;
+import org.springblade.manager.entity.RoutingInspection;
+
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl 单挑详细信息显示
+ * @Date 2023/11/2 14:44
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class RoutingInspectionVO2 extends RoutingInspection {
+
+    @ApiModelProperty(value = "检查项目集合")
+    private List<InspectionRectify> list;
+
+}

+ 2 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileTaskController.java

@@ -252,9 +252,8 @@ public class ArchiveFileTaskController extends BladeController {
                 }
 
             } else if (dto.getSelectedType().equals(2)) { //已办页面
-                sqlString.append("EXISTS (SELECT 1 FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.status = ? AND u_task_parallel.task_user = ?)");
-                //当前自己的任务必须是已审批,才视为已办
-                params.add(2);
+                sqlString.append("EXISTS (SELECT 1 FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.status in(2,3) AND u_task_parallel.task_user = ?)");
+                //当前自己的任务必须是已审批、已废除 status = 2,3 ,才视为已办
                 params.add(SecureUtil.getUserId());
 
             } else if (dto.getSelectedType().equals(3)) { //我发起页面

+ 17 - 13
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -156,20 +156,24 @@ public class ArchivesAutoController extends BladeController {
 			@ApiImplicitParam(name = "nodeIds", value = "搜索树的节点id集合")
 	})
 	public R pageByArchivesAuto(ArchivesAutoVO archivesAuto) {
-		if (archivesAuto.getListType() == 1) {
-			IPage<ArchivesAutoVO> pages = archivesAutoService.pageByArchivesAuto(archivesAuto);
-			return R.data(pages);
-		}else {
-			//档案柜
-			if(archivesAuto.getCabinetNumber() == null) {
-				List<Map<String, List<Map<String, String>>>> lists = archivesAutoService.getArchivesCabinet(archivesAuto);
-				return R.data(lists);
-			}else {
-				//查询具体柜子里的数据
-				archivesAuto.setSize(160);
-				archivesAuto.setCurrent(archivesAuto.getCabinetNumber());
-				return archivesAutoService.pageByArchivesAuto2(archivesAuto);
+		try {
+			if (archivesAuto.getListType() == 1) {
+				IPage<ArchivesAutoVO> pages = archivesAutoService.pageByArchivesAuto(archivesAuto);
+				return R.data(pages);
+			} else {
+				//档案柜
+				if (archivesAuto.getCabinetNumber() == null) {
+					List<Map<String, List<Map<String, String>>>> lists = archivesAutoService.getArchivesCabinet(archivesAuto);
+					return R.data(lists);
+				} else {
+					//查询具体柜子里的数据
+					archivesAuto.setSize(160);
+					archivesAuto.setCurrent(archivesAuto.getCabinetNumber());
+					return archivesAutoService.pageByArchivesAuto2(archivesAuto);
+				}
 			}
+		}catch (Exception e){
+			return R.data(null);
 		}
 	}
 

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

@@ -1267,9 +1267,8 @@ public class TaskController extends BladeController {
                 }
 
             } else if (dto.getSelectedType().equals(2)) { //已办页面
-                sqlString.append("EXISTS (SELECT 1 FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.status = ? AND u_task_parallel.task_user = ?)");
-                //当前自己的任务必须是已审批,才视为已办
-                params.add(2);
+                sqlString.append("EXISTS (SELECT 1 FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.status in(2,3) AND u_task_parallel.task_user = ?)");
+                //当前自己的任务必须是已审批、已废除 status = 2,3 ,才视为已办
                 params.add(SecureUtil.getUserId());
 
             } else if (dto.getSelectedType().equals(3)) { //我发起页面
@@ -1602,6 +1601,9 @@ public class TaskController extends BladeController {
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "任务管理-一键重签", notes = "传入taskIds、下拉框的contractId、projectId")
     public R<Object> reSigningEVisa(@RequestParam String taskIds, @RequestParam String contractId, @RequestParam String projectId, HttpServletRequest request) {
+        if (ObjectUtil.isEmpty(taskIds)) {
+            return R.fail("请选择一条记录");
+        }
         String header = request.getHeader("Blade-Auth");
         taskService.reSigningEVisa(taskIds, contractId, projectId, header);
         return R.success("任务已经成功提交重签,请耐心等待!");

+ 2 - 2
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -333,8 +333,8 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
     }
 
     @Override
-    public List<ArchiveFile> getListByContractId(Long contractId) {
-        return fileMapper.getListByContractId(contractId);
+    public List<ArchiveFile> getListByContractId(Long contractId,Integer classify) {
+        return fileMapper.getListByContractId(contractId,classify);
     }
 
     @Override

+ 3 - 2
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/InformationQueryClientImpl.java

@@ -13,6 +13,7 @@ import org.springblade.business.service.IInformationQueryFileService;
 import org.springblade.business.service.IInformationQueryService;
 import org.springblade.business.vo.QueryProcessDataVO;
 import org.springblade.common.utils.SnowFlakeUtil;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
@@ -112,8 +113,8 @@ public class InformationQueryClientImpl implements InformationQueryClient {
     }
 
     @Override
-    public List<InformationQuery> getInformationByContractId(Long contractId) {
-        return informationQueryMapper.getInformationByContractId(contractId);
+    public List<InformationQuery> getInformationByContractId(Long contractId, Integer classify) {
+        return informationQueryMapper.getInformationByContractId(contractId,classify);
     }
 
     @Override

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java

@@ -95,7 +95,7 @@ public interface ArchiveFileMapper extends BaseMapper<ArchiveFile> {
 
     List<ArchiveFile> batchSearchArchiveFile(@Param("ids") List<Long> ids);
 
-    List<ArchiveFile> getListByContractId(@Param("contractId") Long contractId);
+    List<ArchiveFile> getListByContractId(@Param("contractId") Long contractId, @Param("classify") Integer classify);
 
 
     List<ArchivesAutoVO> getAllArchiveAutoByContractType(@Param("projectId") Long projectId);

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -412,7 +412,7 @@
         FROM
             u_archive_file u
                 LEFT JOIN m_archive_tree_contract ar on u.node_id = ar.id
-        where 	u.contract_id = #{contractId}
+        where 	u.contract_id = #{contractId} and u.classify = #{classify}
           AND u.is_deleted = 0
           AND u.source_type = 1 and ar.is_deleted = 0;
     </select>

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.java

@@ -139,7 +139,7 @@ public interface InformationQueryMapper extends BaseMapper<InformationQuery> {
 
     List<InformationQuery> selectChildrenNodeInfo(@Param("node") WbsTreeContract node);
 
-    List<InformationQuery> getInformationByContractId(@Param("contractId") Long contractId);
+    List<InformationQuery> getInformationByContractId(@Param("contractId") Long contractId, @Param("classify")Integer classify);
 
     List<TabBusstimeInfo> getTabussTimeInfo(@Param("tables") List<String> tables);
 

+ 2 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml

@@ -955,11 +955,12 @@
         name,
         e_visa_pdf_url,
         business_time,
+        classify,
         e_visa_pdf_page,
         e_visa_pdf_size
         from u_information_query
         where is_deleted = 0
-          and contract_id = #{contractId} and status = 2 and is_deleted = 0;
+          and contract_id = #{contractId} and classify = #{classify} and status = 2 and is_deleted = 0;
     </select>
 
     <select id="getTabussTimeInfo" resultMap="tabBusstimeInfoResultMap">

+ 54 - 4
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -513,8 +513,40 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 
         //转换VO
         if (result != null && result.size() != 0) {
+
+            //属于待审批和已审批状态,查询待办信息
+            Map<Long, Task> taskMaps = new HashMap<>();
+            Map<String, List<TaskParallel>> taskParallelMaps = new HashMap<>();
+            List<Long> informationIds = result.stream().filter(f -> f.getStatus().equals(1) || f.getStatus().equals(2)).map(InformationQuery::getId).collect(Collectors.toList());
+            String informationIdsStr = informationIds.stream().map(String::valueOf).collect(Collectors.joining(","));
+            if (StringUtils.isNotEmpty(informationIdsStr)) {
+                List<Task> query = jdbcTemplate.query("SELECT id,form_data_id,process_instance_id,approval_type,status,batch,project_id,contract_id FROM u_task WHERE form_data_id IN(" + informationIdsStr + ") AND status IN (1, 2, 3) AND is_deleted = 0", new BeanPropertyRowMapper<>(Task.class));
+                taskMaps = query.stream().collect(Collectors.toMap(Task::getId, Function.identity()));
+
+                Set<String> processInstanceIds = query.stream().map(Task::getProcessInstanceId).map(id -> "'" + id + "'").collect(Collectors.toSet());
+                if (processInstanceIds.size() > 0) {
+                    List<TaskParallel> taskParallels = jdbcTemplate.query("select task_user, task_user_name, e_visa_status, status, process_instance_id from u_task_parallel where is_deleted = 0 and process_instance_id in(" + StringUtils.join(processInstanceIds, ",") + ")", new BeanPropertyRowMapper<>(TaskParallel.class));
+                    taskParallelMaps = taskParallels.stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
+                }
+            }
+
+            //校验关联的工序节点是否全都已审批
+            List<String> sjRecordIds = result.stream().map(InformationQuery::getSjRecordIds).filter(Objects::nonNull).collect(Collectors.toList());
+            Set<Long> ids = new HashSet<>();
+            for (String sjRecordId : sjRecordIds) {
+                List<Long> longs = Func.toLongList(sjRecordId);
+                ids.addAll(longs);
+            }
+            List<InformationQuery> informationQueries = new ArrayList<>();
+            if (ids.size() > 0) {
+                informationQueries = baseMapper.selectBatchIds(ids);
+            }
+
             List<InformationQueryVO> voResult = JSONArray.parseArray(JSONObject.toJSONString(result), InformationQueryVO.class);
             //处理流程状态
+            List<InformationQuery> finalInformationQueries = informationQueries;
+            Map<Long, Task> finalTaskMaps = taskMaps;
+            Map<String, List<TaskParallel>> finalTaskParallelMaps = taskParallelMaps;
             voResult.forEach(vor -> {
                 if (ObjectUtil.isNotEmpty(vor.getCreateTime())) {
                     vor.setStartTime(DateUtil.format(vor.getCreateTime(), "yyyy-MM-dd"));
@@ -540,7 +572,7 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 
                 if (Arrays.asList("1,2".split(",")).contains(vor.getStatus().toString())) {
                     //说明属于待审批和已审批状态,查询待办信息
-                    List<Task> tasks = this.taskClient.queryTaskListByFormDataId(String.valueOf(vor.getId()));
+                    /*List<Task> tasks = this.taskClient.queryTaskListByFormDataId(String.valueOf(vor.getId()));
                     if (tasks != null && tasks.size() > 0) {
                         //查询当前任务的所有待办人
                         List<TaskParallel> linkTasks = this.taskParallelService.queryApprovalUser(tasks.get(0).getProcessInstanceId());
@@ -550,18 +582,37 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
                         }
                         //设置上报批次
                         vor.setReportNumber(String.valueOf(tasks.get(0).getBatch()));
+                    }*/
+                    Task task = finalTaskMaps.getOrDefault(vor.getId(), null);
+                    if (task != null) {
+                        //查询当前任务的所有待办人
+                        List<TaskParallel> linkTasks = finalTaskParallelMaps.getOrDefault(task.getProcessInstanceId(), null);
+                        if (linkTasks != null && linkTasks.size() > 0) {
+                            //处理审批状态
+                            this.integrationMethod(vor, linkTasks);
+                        }
+                        //设置上报批次
+                        vor.setReportNumber(String.valueOf(task.getBatch()));
                     }
                 }
 
                 //校验关联的工序节点是否全都已审批
                 if (StringUtils.isNotEmpty(vor.getSjRecordIds())) {
-                    List<InformationQuery> informationQueryList = this.baseMapper.selectBatchIds(Func.toLongList(vor.getSjRecordIds()));
+                    /*List<InformationQuery> informationQueryList = this.baseMapper.selectBatchIds(Func.toLongList(vor.getSjRecordIds()));
                     List<InformationQuery> collect = informationQueryList.stream().filter(f -> f.getStatus().equals(2)).collect(Collectors.toList());
                     if (collect.size() == informationQueryList.size()) {
                         vor.setIsApprove(true);
                     } else {
                         vor.setIsApprove(false);
-                    }
+                    }*/
+
+                    List<String> recordIdList = Func.toStrList(vor.getSjRecordIds());
+                    List<InformationQuery> informationQueryList = finalInformationQueries.stream()
+                            .filter(f -> recordIdList.contains(f.getId().toString()))
+                            .collect(Collectors.toList());
+                    boolean isApprove = informationQueryList.stream()
+                            .allMatch(f -> f.getStatus().equals(2));
+                    vor.setIsApprove(isApprove);
                 }
 
                 //试验关联文件pdf
@@ -570,7 +621,6 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
                 } catch (FileNotFoundException e) {
                     e.printStackTrace();
                 }
-
             });
 
             if (ObjectUtil.isEmpty(voResult)) {

+ 130 - 63
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -1194,7 +1194,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 } else //电签完成
                 {
                     try {
-                        archiveTreeContractClient.writeBusinessData(query.getWbsId(), query.getContractId(), formDataId);
+                        archiveTreeContractClient.writeBusinessData(query.getWbsId(), query.getContractId(), formDataId, query.getClassify());
                     } catch (Exception e) {
                     }
                 }
@@ -1216,6 +1216,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
         List<ArchiveFile> archiveFiles = this.archiveFileService.list(Wrappers.<ArchiveFile>lambdaQuery()
                 .eq(ArchiveFile::getNodeId, nodeId.toString())
+                .eq(ArchiveFile::getClassify, query.getClassify())
                 .eq(ArchiveFile::getNodeExtId, keyId)
                 .eq(ArchiveFile::getIsDeleted, 0));
 
@@ -1236,12 +1237,12 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             if (wbsTreeContract != null) {
                 createTime = wbsTreeContract.getCreateTime();
             }
-            ArchiveFile newArchiveFile = getArchiveFile(query, nodeId, keyId, query.getEVisaPdfSize(), contractIndfo.archivesUnit(), createTime);
+            ArchiveFile newArchiveFile = getArchiveFile(query, nodeId, keyId, query.getEVisaPdfSize(), contractIndfo.archivesUnit(), createTime,query.getClassify());
             this.archiveFileService.save(newArchiveFile);
         }
     }
 
-    public ArchiveFile getArchiveFile(InformationQuery query, Long nodeId, Long keyId, Long fileSize, String unit, Date createTime) {
+    public ArchiveFile getArchiveFile(InformationQuery query, Long nodeId, Long keyId, Long fileSize, String unit, Date createTime,Integer classify) {
         ArchiveFile archiveFile = new ArchiveFile();
         archiveFile.setNodeId(nodeId.toString());
         archiveFile.setNodeExtId(keyId);
@@ -1255,6 +1256,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
         //责任人怎么取
         archiveFile.setDutyUser(unit);
+        //设置施工监理
+        archiveFile.setClassify(classify);
 
         //文件大小
         archiveFile.setFileSize(query.getEVisaPdfSize());
@@ -1299,76 +1302,140 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         }
     }
 
+//    @Override
+//    public void reSigningEVisa(String taskIds, String contractId, String projectId,String header) {
+//        List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));
+//        if (taskList.size() > 0) {
+//            List<String> dataIdList = taskList.stream().map(Task::getFormDataId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
+//            List<InformationQuery> informationQueryList = jdbcTemplate.query("select * from u_information_query where id in(" + StringUtils.join(dataIdList, ",") + ")", new BeanPropertyRowMapper<>(InformationQuery.class));
+//            if (informationQueryList.size() > 0) {
+//                List<Long> nodePKeyIdList = informationQueryList.stream().map(InformationQuery::getWbsId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
+//                if (nodePKeyIdList.size() > 0) {
+//                    try {
+//                        //重新保存
+//                        long startTime_1 = System.currentTimeMillis();
+//                        R result = this.saveNodePdf(StringUtils.join(nodePKeyIdList, ","), contractId, projectId,header);
+//                        long endTime_1 = System.currentTimeMillis();
+//                        long executionTime_1 = endTime_1 - startTime_1;
+//                        log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");
+//
+//                        //重新电签
+//                        if (result != null && "成功".equals(result.getData())) {
+//
+//                            List<TaskApprovalVO> taskApprovalVOS = new ArrayList<>();
+//                            //获取任务详情信息Map
+//                            Set<String> processInstanceIds = taskList.stream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
+//                            Map<String, List<TaskParallel>> taskParallelGroupMap = new HashMap<>();
+//                            if (processInstanceIds.size() > 0) {
+//                                String resultIds = processInstanceIds.stream()
+//                                        .map(id -> "'" + id + "'")
+//                                        .collect(Collectors.joining(","));
+//                                taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,e_visa_status,task_user,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
+//                            }
+//                            Map<String, List<TaskParallel>> finalTaskParallelGroupMap = taskParallelGroupMap;
+//
+//                            for (Task task : taskList) {
+//                                List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
+//                                for (TaskParallel taskParallel : taskParallelList) {
+//                                    //待审批的不进行重签, 存在待审批,但是电签状态是失败的
+//                                    if (!(new Integer(1)).equals(taskParallel.getStatus()) || (taskParallel.getEVisaStatus() != null && taskParallel.getEVisaStatus() == 99)) {
+//                                        TaskApprovalVO approvalVO = new TaskApprovalVO();
+//                                        approvalVO.setTaskId(task.getId().toString());
+//                                        approvalVO.setFlag("OK");
+//                                        approvalVO.setComment("重新发起电签");
+//                                        approvalVO.setApprovalType(1);
+//                                        approvalVO.setFormDataId(task.getFormDataId());
+//                                        approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
+//                                        approvalVO.setYsNickName(taskParallel.getTaskUserName());
+//                                        approvalVO.setUserId(Long.parseLong(taskParallel.getTaskUser()));
+//                                        taskApprovalVOS.add(approvalVO);
+//                                    }
+//                                }
+//                            }
+//                            long startTime_2 = System.currentTimeMillis();
+//                            this.batchCompleteApprovalTask(taskApprovalVOS);
+//                            long endTime_2 = System.currentTimeMillis();
+//                            long executionTime_2 = endTime_2 - startTime_2;
+//                            log.info("batchCompleteApprovalTask执行时间:" + executionTime_2 + " 毫秒");
+//                        } else {
+//                            throw new ServiceException("重新保存PDF信息失败");
+//                        }
+//
+//                    } catch (Exception e) {
+//                        e.printStackTrace();
+//                        throw new ServiceException("重新保存PDF信息失败,原因:" + e.getMessage());
+//                    }
+//                }
+//            }
+//        }
+//        throw new ServiceException("未获取到任务信息,操作失败!");
+//    }
+
     @Override
     public void reSigningEVisa(String taskIds, String contractId, String projectId,String header) {
-        if (ObjectUtil.isEmpty(taskIds)) {
-            throw new ServiceException("请选择至少一条任务进行重签");
-        }
+        //查询任务信息
         List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));
         if (taskList.size() > 0) {
+            //获取任务详情信息Map
+            Set<String> processInstanceIds = taskList.stream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
+            Map<String, List<TaskParallel>> taskParallelGroupMap = new HashMap<>();
+            if (processInstanceIds.size() > 0) {
+                String resultIds = processInstanceIds.stream()
+                        .map(id -> "'" + id + "'")
+                        .collect(Collectors.joining(","));
+                taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,e_visa_status,task_user,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
+            }
+            Map<String, List<TaskParallel>> finalTaskParallelGroupMap = taskParallelGroupMap;
+            //获取每条任务对应的节点信息
             List<String> dataIdList = taskList.stream().map(Task::getFormDataId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
-            List<InformationQuery> informationQueryList = jdbcTemplate.query("select * from u_information_query where id in(" + StringUtils.join(dataIdList, ",") + ")", new BeanPropertyRowMapper<>(InformationQuery.class));
-            if (informationQueryList.size() > 0) {
-                List<Long> nodePKeyIdList = informationQueryList.stream().map(InformationQuery::getWbsId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
-                if (nodePKeyIdList.size() > 0) {
-                    try {
-                        //重新保存
-                        long startTime_1 = System.currentTimeMillis();
-                        R result = this.saveNodePdf(StringUtils.join(nodePKeyIdList, ","), contractId, projectId,header);
-                        long endTime_1 = System.currentTimeMillis();
-                        long executionTime_1 = endTime_1 - startTime_1;
-                        log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");
-
-                        //重新电签
-                        if (result != null && "成功".equals(result.getData())) {
-
-                            List<TaskApprovalVO> taskApprovalVOS = new ArrayList<>();
-                            //获取任务详情信息Map
-                            Set<String> processInstanceIds = taskList.stream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
-                            Map<String, List<TaskParallel>> taskParallelGroupMap = new HashMap<>();
-                            if (processInstanceIds.size() > 0) {
-                                String resultIds = processInstanceIds.stream()
-                                        .map(id -> "'" + id + "'")
-                                        .collect(Collectors.joining(","));
-                                taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,e_visa_status,task_user,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
-                            }
-                            Map<String, List<TaskParallel>> finalTaskParallelGroupMap = taskParallelGroupMap;
-
-                            for (Task task : taskList) {
-                                List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
-                                for (TaskParallel taskParallel : taskParallelList) {
-                                    //待审批的不进行重签, 存在待审批,但是电签状态是失败的
-                                    if (!(new Integer(1)).equals(taskParallel.getStatus()) || (taskParallel.getEVisaStatus() != null && taskParallel.getEVisaStatus() == 99)) {
-                                        TaskApprovalVO approvalVO = new TaskApprovalVO();
-                                        approvalVO.setTaskId(task.getId().toString());
-                                        approvalVO.setFlag("OK");
-                                        approvalVO.setComment("重新发起电签");
-                                        approvalVO.setApprovalType(1);
-                                        approvalVO.setFormDataId(task.getFormDataId());
-                                        approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
-                                        approvalVO.setYsNickName(taskParallel.getTaskUserName());
-                                        approvalVO.setUserId(Long.parseLong(taskParallel.getTaskUser()));
-                                        taskApprovalVOS.add(approvalVO);
-                                    }
-                                }
+            Map<String, String> queryMap = jdbcTemplate.query("select * from u_information_query where id in(" + StringUtils.join(dataIdList, ",") + ")", new BeanPropertyRowMapper<>(InformationQuery.class)).stream().collect(Collectors.toMap(l -> l.getId()+"", l -> l.getWbsId()+""));
+            try {
+                for (Task task : taskList) {
+                    //重新保存
+                    long startTime_1 = System.currentTimeMillis();
+                    R result = this.saveNodePdf(queryMap.get(task.getFormDataId()), contractId, projectId, header);
+                    long endTime_1 = System.currentTimeMillis();
+                    long executionTime_1 = endTime_1 - startTime_1;
+                    log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");
+
+                    //重新电签
+                    if (result != null && "成功".equals(result.getData())) {
+                        List<TaskApprovalVO> taskApprovalVOS = new ArrayList<>();
+                        List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
+                        for (TaskParallel taskParallel : taskParallelList) {
+                            //待审批的不进行重签, 存在待审批,但是电签状态是失败的
+                            if (!(new Integer(1)).equals(taskParallel.getStatus()) || (taskParallel.getEVisaStatus() != null && taskParallel.getEVisaStatus() == 99)) {
+                                TaskApprovalVO approvalVO = new TaskApprovalVO();
+                                approvalVO.setTaskId(task.getId().toString());
+                                approvalVO.setFlag("OK");
+                                approvalVO.setComment("重新发起电签");
+                                approvalVO.setApprovalType(1);
+                                approvalVO.setFormDataId(task.getFormDataId());
+                                approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
+                                approvalVO.setYsNickName(taskParallel.getTaskUserName());
+                                approvalVO.setUserId(Long.parseLong(taskParallel.getTaskUser()));
+                                taskApprovalVOS.add(approvalVO);
                             }
-                            long startTime_2 = System.currentTimeMillis();
-                            this.batchCompleteApprovalTask(taskApprovalVOS);
-                            long endTime_2 = System.currentTimeMillis();
-                            long executionTime_2 = endTime_2 - startTime_2;
-                            log.info("batchCompleteApprovalTask执行时间:" + executionTime_2 + " 毫秒");
-
-                            throw new ServiceException("任务已经成功提交重签,请耐心等待!");
-                        } else {
-                            throw new ServiceException("重新保存PDF信息失败");
                         }
-
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        throw new ServiceException("重新保存PDF信息失败,原因:" + e.getMessage());
+                        long startTime_2 = System.currentTimeMillis();
+                        this.batchCompleteApprovalTask(taskApprovalVOS);
+                        long endTime_2 = System.currentTimeMillis();
+                        long executionTime_2 = endTime_2 - startTime_2;
+                        log.info("batchCompleteApprovalTask执行时间:" + executionTime_2 + " 毫秒");
+                    } else {
+                        //修改重签状态为保存PDF失败
+                        this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate()
+                                .set(TaskParallel::getEVisaContent, "重新保存PDF失败")
+                                .eq(TaskParallel::getProcessInstanceId, task.getProcessInstanceId())
+                                .eq(TaskParallel::getEVisaStatus,"99"));
                     }
                 }
+
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new ServiceException("重新保存PDF信息失败,原因:" + e.getMessage());
             }
+
         }
         throw new ServiceException("未获取到任务信息,操作失败!");
     }

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

@@ -421,7 +421,7 @@ public class ArchiveTreeContractController extends BladeController {
     @ApiOperation(value = "同步业务数据", notes = "传入节点id")
     public R test1(Long projectId,Long contractId) {
 
-        archiveTreeContractSync.syncBusinessData(projectId,contractId);
+        archiveTreeContractSync.syncBusinessData(projectId,contractId,1);
 
         return R.success("开始同步合同段,请耐心等待" );
     }
@@ -430,7 +430,7 @@ public class ArchiveTreeContractController extends BladeController {
     @ApiOperation(value = "同步业务数据", notes = "传入节点id")
     public R writeBusinessData(Long keyId, Long contractId, String formDataId) {
 
-        archiveTreeContractService.writeBusinessData(keyId,contractId,formDataId);
+        archiveTreeContractService.writeBusinessData(keyId,contractId,formDataId,1);
 
         return R.success("开始同步合同段,请耐心等待" );
     }

+ 33 - 30
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -3909,7 +3909,7 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "classify", value = "classify", required = true),
             @ApiImplicitParam(name = "projectId", value = "projectId", required = true)
     })
-    public R synPDFInfo(String contractId,String nodeIds, String classify, String projectId) throws Exception {
+    public R synPDFInfo(String contractId,String nodeIds, String classify, String projectId) {
 
         if( contractId==null && StringUtils.isEmpty(contractId)){
             return R.data("contractId不能为空");
@@ -3928,38 +3928,41 @@ public class ExcelTabController extends BladeController {
         }
 
         String nodeId[] = Func.toStrArray(nodeIds);
-
-        for(String noId : nodeId){
-            JSONObject js = new JSONObject();
-            JSONObject js2 = new JSONObject();
-            List<AppWbsTreeContractVO> tableAll = wbsTreeContractService.searchNodeAllTable(noId, classify, contractId, projectId);
-            JSONArray array = new JSONArray();
-            if(tableAll!=null && tableAll.size()>=1){
-                for(AppWbsTreeContractVO tab:tableAll){
-                    try {
-                        R bussDataInfo = excelTabService.getBussDataInfo(tab.getPKeyId(), 0);
-                        Map<String, Object> jo = (Map<String, Object>) bussDataInfo.getData();
-                        String s = new Gson().toJson(jo);
-                        //字符串转jsonobject
-                        JSONObject obj = JSON.parseObject(s);
-                        obj.put("classify",classify);
-                        obj.put("nodeId",noId);
-                        obj.put("contractId",contractId);
-                        obj.put("pkeyId",tab.getPKeyId());
-                        obj.put("projectId",projectId);
-                        obj.put("isCollapseLoad",true);
-                        obj.put("isRenderForm",true);
-                        array.add(obj);
-                    }catch (Exception e){
-                        e.printStackTrace();
-                    }finally {
-                        continue;
+        try {
+            for (String noId : nodeId) {
+                JSONObject js = new JSONObject();
+                JSONObject js2 = new JSONObject();
+                List<AppWbsTreeContractVO> tableAll = wbsTreeContractService.searchNodeAllTable(noId, classify, contractId, projectId);
+                JSONArray array = new JSONArray();
+                if (tableAll != null && tableAll.size() >= 1) {
+                    for (AppWbsTreeContractVO tab : tableAll) {
+                        try {
+                            R bussDataInfo = excelTabService.getBussDataInfo(tab.getPKeyId(), 0);
+                            Map<String, Object> jo = (Map<String, Object>) bussDataInfo.getData();
+                            String s = new Gson().toJson(jo);
+                            //字符串转jsonobject
+                            JSONObject obj = JSON.parseObject(s);
+                            obj.put("classify", classify);
+                            obj.put("nodeId", noId);
+                            obj.put("contractId", contractId);
+                            obj.put("pkeyId", tab.getPKeyId());
+                            obj.put("projectId", projectId);
+                            obj.put("isCollapseLoad", true);
+                            obj.put("isRenderForm", true);
+                            array.add(obj);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        } finally {
+                            continue;
+                        }
                     }
                 }
+                js2.put("orderList", array);
+                js.put("dataInfo", js2);
+                this.saveBussData2(js);
             }
-            js2.put("orderList",array);
-            js.put("dataInfo",js2);
-            this.saveBussData2(js);
+        }catch (Exception e){
+            return null;
         }
         return R.data("成功");
     }

+ 19 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/InspectionRectifyController.java

@@ -0,0 +1,19 @@
+package org.springblade.manager.controller;
+
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/11/2 13:55
+ **/
+@RestController
+@AllArgsConstructor
+@RequestMapping("/inspectionRectify")
+@Api(value = "检查与整改接口", tags = "检查与整改接口")
+public class InspectionRectifyController {
+
+}

+ 145 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/RoutingInspectionController.java

@@ -0,0 +1,145 @@
+package org.springblade.manager.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.manager.dto.RoutingInspectionDTO;
+import org.springblade.manager.entity.RoutingInspection;
+import org.springblade.manager.service.IRoutingInspectionService;
+import org.springblade.manager.vo.RoutingInspectionVO;
+import org.springblade.manager.vo.RoutingInspectionVO2;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/11/2 13:55
+ **/
+@RestController
+@AllArgsConstructor
+@RequestMapping("/routingInspection")
+@Api(value = "巡检接口", tags = "巡检接口")
+public class RoutingInspectionController {
+
+    private final IRoutingInspectionService inspectionService;
+
+    /**
+     * 新增
+     */
+    @PostMapping("/add")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "新增", notes = "传入对象")
+    public R addOrUpdate(@RequestBody RoutingInspectionDTO dto) {
+        inspectionService.add(dto);
+        return R.success("新增成功");
+    }
+
+
+    @GetMapping("/page")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "巡检分页", notes = "巡检分页")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true)
+    })
+    public R<IPage<RoutingInspectionVO>> page(Query query, RoutingInspection inspection)  {
+        IPage<RoutingInspectionVO> page = inspectionService.page(query, inspection);
+        return R.data(page);
+    }
+
+    /**
+     * 查看单个巡检信息
+     */
+    @GetMapping("/detail")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "查看单个巡检信息,整改也调用此接口", notes = "传入巡检id")
+    public R<RoutingInspectionVO2> detail(Long id) {
+        RoutingInspectionVO2 vo2 = inspectionService.detail(id);
+        return R.data(vo2);
+    }
+
+    /**
+     * 巡检修改
+     */
+    @PostMapping("/Update")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "巡检修改", notes = "传入对象")
+    public R Update(@RequestBody RoutingInspectionDTO dto) {
+        inspectionService.Update(dto);
+        return R.success("修改成功");
+    }
+
+    @GetMapping("/delete")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "删除巡检", notes = "传入巡检id")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "id", value = "巡检id", required = true)
+    })
+    public R delete(Long id)  {
+        inspectionService.delete(id);
+        return R.success("删除成功");
+    }
+
+
+    /**
+     * 提交整改记录
+     */
+    @PostMapping("/submitRectify")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "提交整改记录", notes = "传入对象")
+    public R submitRectify(@RequestBody RoutingInspectionDTO dto) {
+        inspectionService.submitRectify(dto);
+        return R.success("提交成功");
+    }
+
+
+    @GetMapping("/page2")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "整改管理分页", notes = "整改管理分页")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true)
+    })
+    public R<IPage<RoutingInspectionVO>> page2(Query query, RoutingInspection inspection)  {
+        inspection.setIsRectify(1);
+        IPage<RoutingInspectionVO> page = inspectionService.page(query, inspection);
+        return R.data(page);
+    }
+
+    /**
+     * 复核检测
+     */
+    @GetMapping("/reviewInspect")
+    @ApiOperationSupport(order = 8)
+    @ApiOperation(value = "复核检测", notes = "复核检测")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "id", value = "巡检信息id", required = true),
+            @ApiImplicitParam(name = "status", value = "复检状态 1未通过2通过", required = true)
+    })
+    public R reviewInspect(Long id,Integer status) {
+        inspectionService.reviewInspect(id,status);
+        return R.success("操作成功");
+    }
+
+    /**
+     * 撤回提交
+     */
+    @GetMapping("/revokeSubmit")
+    @ApiOperationSupport(order = 8)
+    @ApiOperation(value = "撤回提交", notes = "撤回提交")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "id", value = "巡检信息id", required = true)
+    })
+    public R revokeSubmit(Long id) {
+        inspectionService.revokeSubmit(id);
+        return R.success("撤回成功");
+    }
+
+
+}

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeContractImpl.java

@@ -103,8 +103,8 @@ public class ArchiveTreeContractImpl implements ArchiveTreeContractClient {
     }
 
     @Override
-    public Integer writeBusinessData(Long keyId, Long contractId, String formDataId) {
-        return archiveTreeContractService.writeBusinessData(keyId,contractId,formDataId);
+    public Integer writeBusinessData(Long keyId, Long contractId, String formDataId,Integer classify) {
+        return archiveTreeContractService.writeBusinessData(keyId,contractId,formDataId,classify);
     }
 
     @Override

+ 13 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/InspectionRectifyMapper.java

@@ -0,0 +1,13 @@
+package org.springblade.manager.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.manager.entity.InspectionRectify;
+import org.springblade.manager.entity.RoutingInspection;
+
+
+public interface InspectionRectifyMapper extends BaseMapper<InspectionRectify> {
+
+    void deleteByInspectId(@Param("inspectId") Long inspectId);
+}

+ 9 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/InspectionRectifyMapper.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.manager.mapper.InspectionRectifyMapper">
+
+    <delete id="deleteByInspectId">
+        DELETE FROM m_inspection_rectify
+        WHERE inspect_id = #{inspectId}
+    </delete>
+</mapper>

+ 14 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/RoutingInspectionMapper.java

@@ -0,0 +1,14 @@
+package org.springblade.manager.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.manager.entity.RoutingInspection;
+import org.springblade.manager.vo.RoutingInspectionVO;
+
+
+public interface RoutingInspectionMapper extends BaseMapper<RoutingInspection> {
+
+    IPage<RoutingInspectionVO> page(IPage<RoutingInspectionVO> iPage,@Param("inspection") RoutingInspection inspection);
+}

+ 20 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/RoutingInspectionMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.manager.mapper.RoutingInspectionMapper">
+
+    <select id="page" resultType="org.springblade.manager.vo.RoutingInspectionVO">
+        select mri.*,
+               (select project_name from m_project_info where id = mri.project_id) as projectName,
+               (select dict_value from blade_dict where code = 'inspect_type' and dict_key = mri.inspect_type) as inspectTypeName,
+               (select dict_value from blade_dict where code = 'review_inspect_status' and dict_key = mri.review_inspect_status) as reviewInspectStatusName,
+               case mri.is_rectify
+                   when 1 then '未开始'
+                   when 2 then '进行中'
+                   end as isRectifyName
+        from m_routing_inspection mri
+        where mri.is_deleted = 0 and mri.project_id = #{inspection.projectId}
+        <if test="inspection.isRectify != null and inspection.isRectify != ''">
+            and mri.is_rectify = #{inspection.isRectify}
+        </if>
+    </select>
+</mapper>

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

@@ -117,7 +117,7 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
 
     void updateAllSonNodeIdsForArchiveAutoRule(ArchiveTreeContract archiveTreeContract);
 
-    Integer writeBusinessData(Long keyId, Long contractId, String formDataId);
+    Integer writeBusinessData(Long keyId, Long contractId, String formDataId,Integer classify);
 
     ArchiveTreeContract getMeasurementPeriodNode(Long contractId,
                                                         String periodName);

+ 12 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IInspectionRectifyService.java

@@ -0,0 +1,12 @@
+package org.springblade.manager.service;
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.manager.entity.InspectionRectify;
+import org.springblade.manager.entity.RoutingInspection;
+
+public interface IInspectionRectifyService extends BaseService<InspectionRectify> {
+
+    //真实删除检查项目
+    void deleteByInspectId(Long inspectId);
+
+}

+ 36 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IRoutingInspectionService.java

@@ -0,0 +1,36 @@
+package org.springblade.manager.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.core.mp.support.Query;
+import org.springblade.manager.dto.ArchiveTreeContractAutoRuleMapDTO;
+import org.springblade.manager.dto.ArchiveTreeDTO;
+import org.springblade.manager.dto.ArchiveTreeSortDTO;
+import org.springblade.manager.dto.RoutingInspectionDTO;
+import org.springblade.manager.entity.ArchiveTree;
+import org.springblade.manager.entity.RoutingInspection;
+import org.springblade.manager.vo.ArchiveTreeVO2;
+import org.springblade.manager.vo.RoutingInspectionVO;
+import org.springblade.manager.vo.RoutingInspectionVO2;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IRoutingInspectionService extends BaseService<RoutingInspection> {
+
+    void add(RoutingInspectionDTO dto);
+
+    void Update(RoutingInspectionDTO dto);
+
+    IPage<RoutingInspectionVO> page(Query query, RoutingInspection inspection);
+
+    void delete(Long id);
+
+    RoutingInspectionVO2 detail(Long id);
+
+    void reviewInspect(Long id, Integer status);
+
+    void submitRectify(RoutingInspectionDTO dto);
+
+    void revokeSubmit(Long id);
+}

+ 48 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArTreeContractInitServiceImpl.java

@@ -319,7 +319,7 @@ public class ArTreeContractInitServiceImpl {
         for (ArchiveTreeContractVO2 ar : archiveTreeContractVO2s) {
             //关联质检资料
             if (ar.IsQualityAssociationNode()) {
-                List<ArchiveTreeContract> tmpList = getTreeContractFromWbs(tenantId, projectId, wbsId, ar);
+                List<ArchiveTreeContract> tmpList = getTreeContractFromWbs(tenantId, projectId, wbsId, ar,1);
                 addNodes.addAll(tmpList);
             }
         }
@@ -335,7 +335,7 @@ public class ArTreeContractInitServiceImpl {
      * @param tree
      * @return
      */
-    public List<ArchiveTreeContract> getContractExtNodes(String tenantId, Long projectId, ArchiveTreeContractVO2 tree) {
+    public List<ArchiveTreeContract>  getContractExtNodes(String tenantId, Long projectId, ArchiveTreeContractVO2 tree,Integer classify) {
 
         List<ArchiveTreeContract> addNodes = new ArrayList<>();
         List<ArchiveTreeContractVO2> archiveTreeContractVO2s = new ArrayList<>();
@@ -348,15 +348,28 @@ public class ArTreeContractInitServiceImpl {
         for (ArchiveTreeContractVO2 ar : archiveTreeContractVO2s) {
             //关联质检资料
             if (ar.IsQualityAssociationNode()) {
-                List<ArchiveTreeContract> tmpList = getTreeContractFromWbs(tenantId, projectId, wbsId, ar);
-                addNodes.addAll(tmpList);
+
+                //处理施工和监理
+                if (classify == 1 ){
+                    List<ArchiveTreeContract> tmpList = getTreeContractFromWbs(tenantId, projectId, wbsId, ar,classify);
+                    addNodes.addAll(tmpList);
+                }else {
+                    Long contractId = ar.getContractId();
+                    List<ContractRelationJlyz> list = contractInfoService.searchContractRelationInfo(contractId.toString());
+                    for (ContractRelationJlyz contractRelationJlyz: list) {
+                        ar.setContractId(contractRelationJlyz.getId());
+                        List<ArchiveTreeContract> tmpList = getTreeContractFromWbs(tenantId, projectId, wbsId, ar,classify);
+                        addNodes.addAll(tmpList);
+                    }
+                    ar.setContractId(contractId);
+                }
             }
         }
         return addNodes;
     }
 
-
-    public List<ArchiveTreeContract> getTreeContractFromWbs(String tenantId, Long projectId, Long wbsId, ArchiveTreeContractVO2 subTree) {
+    public List<ArchiveTreeContract> getTreeContractFromWbs(String tenantId, Long projectId, Long wbsId,
+                                                            ArchiveTreeContractVO2 subTree,Integer classify) {
         List<ArchiveTreeContract> archiveTreeContracts = new ArrayList<>();
 
         Long contractId = subTree.getContractId();
@@ -404,7 +417,9 @@ public class ArTreeContractInitServiceImpl {
             //修改配置
             if (wbsTreeVO2.getParentId() == 0) {
                 rootId = wbsTreeVO2.getId();
-                continue;
+                if (classify == 1) {
+                    continue;
+                }
             }
 
             if(wbsTreeVO2.getNodeType() == null){
@@ -441,12 +456,27 @@ public class ArTreeContractInitServiceImpl {
             archiveTree.setContractId(contractId);
             archiveTree.setTreeCode(contractId.toString());
             archiveTree.setId(oldNewMap.get(wbsTreeVO2.getId()));
+
             if (wbsTreeVO2.getParentId().equals(rootId)) {
-                archiveTree.setParentId(subTree.getId());
+                //施工直接在配置节点下
+                if (classify == 1){
+                    archiveTree.setParentId(subTree.getId());
+                }else {
+                    archiveTree.setParentId(oldNewMap.get(wbsTreeVO2.getParentId()));
+                }
+
             } else {
                 archiveTree.setParentId(oldNewMap.get(wbsTreeVO2.getParentId()));
             }
 
+            //监理需要一个合同段节点
+            if (classify == 2){
+                if (wbsTreeVO2.getParentId() == 0) {
+                    archiveTree.setParentId(subTree.getId());
+                }
+            }
+
+
 //            archiveTree.setId(wbsTreeVO2.getId());
 //            if (wbsTreeVO2.getParentId() == 0) {
 //                archiveTree.setParentId(subTree.getId());
@@ -463,8 +493,18 @@ public class ArTreeContractInitServiceImpl {
             }
 
             archiveTree.setNodeName(wbsTreeVO2.getTitle());
+            //监理的最高节点设置成
+            if (classify == 2){
+                if (wbsTreeVO2.getParentId() == 0) {
+                    ContractInfo contractInfo = contractInfoService.getById(contractId);
+                    if (contractInfo != null) {
+                        archiveTree.setNodeName(contractInfo.getContractName());
+                    }
+                }
+            }
 
             //设置关联
+            archiveTree.setClassify(classify);
             archiveTree.setExtType(1);
             archiveTree.setExtId(wbsTreeVO2.getId());
             archiveTree.setExtKeyId(wbsTreeVO2.getPKeyId());

+ 11 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -607,6 +607,12 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 					saveList.addAll(tmpSaveList);
 				}
 			}else {
+
+				Integer classify = 1;
+				if (ar.getTreeCode()!= null && ar.getTreeCode().equals("S")) {
+					classify = 2;
+				}
+
 				for (ArchiveTreeContractVO2 contractNode : ar.getChildren()){
 
 					List<ArchiveTreeContract> tmpSaveList = null;
@@ -631,7 +637,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 
 						//获取工序节点
 						List<ArchiveTreeContract> extSaveList = archiveTreeContractSync.getExtSaveList(dstNodeId,
-								contractNode,dstNode.getProjectId());
+								contractNode,dstNode.getProjectId(),classify);
 						saveList.addAll(extSaveList);
 
 
@@ -1005,11 +1011,12 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	 * @return
 	 */
 
-	public ArchiveTreeContract getWbsNodeFromWbsKeyId(Long contractId,Long pkId,Long attachId) {
+	public ArchiveTreeContract getWbsNodeFromWbsKeyId(Long contractId,Long pkId,Long attachId,Integer classify) {
 		List<ArchiveTreeContract> archiveTreeContracts =  baseMapper.selectList(Wrappers.<ArchiveTreeContract>query().lambda()
 				.eq(ArchiveTreeContract::getContractId, contractId)
 				.eq(ArchiveTreeContract::getIsDeleted, 0)
 				.eq(ArchiveTreeContract::getExtKeyId, pkId)
+				.eq(ArchiveTreeContract::getClassify, classify)
 				.eq(ArchiveTreeContract::getExtAttachId, attachId));
 		if (archiveTreeContracts == null || archiveTreeContracts.size() ==0) {
 			return null;
@@ -1050,7 +1057,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	 * @param contractId
 	 * @return
 	 */
-	public Integer writeBusinessData(Long keyId, Long contractId, String formDataId) {
+	public Integer writeBusinessData(Long keyId, Long contractId, String formDataId,Integer classify) {
 
 		WbsTreeContract wbsTreeContract = wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(keyId);
 
@@ -1077,7 +1084,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 			}
 
 			Long levelkeyId = getWbsKeyIdFromLayer(keyId,level);
-			ArchiveTreeContract node = getWbsNodeFromWbsKeyId(contractId,levelkeyId,attachId);
+			ArchiveTreeContract node = getWbsNodeFromWbsKeyId(contractId,levelkeyId,attachId,classify);
 			if (node!= null ) {
 
 				archiveFileClient.addOrUpdateArchiveFileBusinessData(node.getId(),keyId,contractId,formDataId);

+ 33 - 19
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java

@@ -13,6 +13,7 @@ import org.springblade.business.feign.InformationQueryClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.entity.ContractInfo;
+import org.springblade.manager.entity.ContractRelationJlyz;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.mapper.ArchiveTreeContractMapper;
@@ -181,7 +182,7 @@ public class ArchiveTreeContractSyncImpl {
      * @param dstTrees
      * @return
      */
-    public List<ArchiveTreeContract> getExtSaveList(Long dstNodeId, ArchiveTreeContractVO2 dstTrees, Long projectId) {
+    public List<ArchiveTreeContract> getExtSaveList(Long dstNodeId, ArchiveTreeContractVO2 dstTrees, Long projectId,Integer classify) {
 
         ArchiveTreeContractVO2 dstTree = ForestNodeMergerEx.getSubTree(dstTrees, dstNodeId);
 
@@ -192,7 +193,7 @@ public class ArchiveTreeContractSyncImpl {
         //测试阶段,必须打开项目配置才能同步wbs节点
         if (archiveProjectConfig!= null && archiveProjectConfig.getFactorType().contains("6")) {
             //todo 等测试OK再打开
-            saveList =arTreeContractInitService.getContractExtNodes(AuthUtil.getTenantId(),projectId,dstTree);
+            saveList =arTreeContractInitService.getContractExtNodes(AuthUtil.getTenantId(),projectId,dstTree,classify);
         }
         return saveList;
     }
@@ -256,9 +257,19 @@ public class ArchiveTreeContractSyncImpl {
 
         //executorService.execute(()->{
             try{
-                //将项目未锁定案卷拆卷
-                syncBusinessData(projectId,contractId);
 
+                //合同信息
+                ContractInfo contractIndfo = contractInfoService.getById(contractId);
+                //监理的同步
+                if (contractIndfo.getContractType() == 2) {
+                    List<ContractRelationJlyz> list = contractInfoService.searchContractRelationInfo(contractId.toString());
+                    for (ContractRelationJlyz contractRelationJlyz: list) {
+                        syncBusinessData(projectId,contractRelationJlyz.getId(),2);
+                    }
+                }else {
+                    //将项目未锁定案卷拆卷
+                    syncBusinessData(projectId,contractId,1);
+                }
                 contractInfoService.updateIsArchivesAutoById(contractId, 0);
 
             }catch (Exception e){
@@ -277,7 +288,7 @@ public class ArchiveTreeContractSyncImpl {
      * @param projectId
      * @param contractId
      */
-    public void  syncBusinessData(Long projectId,Long contractId) {
+    public void  syncBusinessData(Long projectId,Long contractId,Integer classify) {
 
         log.info("同步文件  projectId:"+projectId+"-contractId:"+contractId);
 
@@ -291,10 +302,10 @@ public class ArchiveTreeContractSyncImpl {
         ContractInfo contractIndfo = contractInfoService.getById(contractId);
 
         //获取某个合同段所有的电签完成的文件题名
-        List<InformationQuery> informationQueryList = getInformationQuerys(contractId);
+        List<InformationQuery> informationQueryList = getInformationQuerys(contractId,classify);
 
         //获取某个合同段下所有的质检归档文件
-        List<ArchiveFile>  archiveFiles = getArchiveFiles(contractId);
+        List<ArchiveFile>  archiveFiles = getArchiveFiles(contractId,classify);
 
         //wbs的keyId到 归档文件的映射
         Map<Long,ArchiveFile> archiveKeyIdMap = new LinkedHashMap<>();
@@ -333,7 +344,7 @@ public class ArchiveTreeContractSyncImpl {
 
         //同步质检关联节点
         syncNodes(contractId, informationQueryList, wbsTreeContractVO6Map, wbsTreeKeyToSortMap,
-                wbsTreeKeyToIdMap, archiveKeyIdMap, contractIndfo);
+                wbsTreeKeyToIdMap, archiveKeyIdMap, contractIndfo,classify);
 
 
         //wbs的keyId到 归档树的映射
@@ -420,7 +431,7 @@ public class ArchiveTreeContractSyncImpl {
     private void syncNodes(Long contractId, List<InformationQuery> informationQueryList,
                            Map<Long, WbsTreeContractVO6> wbsTreeContractVO6Map, Map<Long, Integer> wbsTreeKeyToSortMap,
                            Map<Long, Long> wbsTreeKeyToIdMap, Map<Long, ArchiveFile> archiveKeyIdMap,
-                           ContractInfo contractIndfo) {
+                           ContractInfo contractIndfo,Integer classify) {
         // 获取关联节点
         List<ArchiveTreeContract> associatedNodes = getWbsAssociatedNodes(contractId.toString());
         if (associatedNodes == null || associatedNodes.isEmpty()) {
@@ -440,7 +451,7 @@ public class ArchiveTreeContractSyncImpl {
             }
 
             // 获取该合同段下的wbs节点
-            List<ArchiveTreeContract> archiveTreeContracts = getArchiveTreeContractsWbs(contractId, node.getId());
+            List<ArchiveTreeContract> archiveTreeContracts = getArchiveTreeContractsWbs(contractId, node.getId(),classify);
 
             // 更新archiveTreeContractIdMap映射
             archiveTreeContractIdMap.clear();
@@ -450,7 +461,7 @@ public class ArchiveTreeContractSyncImpl {
 
             syncNode(informationQueryList, wbsTreeContractVO6Map, wbsTreeKeyToSortMap, wbsTreeKeyToIdMap,
                     archiveKeyIdMap, archiveTreeContractIdMap,
-                    nodeLevel, node.getMajorDataType(), contractIndfo);
+                    nodeLevel, node.getMajorDataType(), contractIndfo,classify);
         }
     }
 
@@ -462,7 +473,7 @@ public class ArchiveTreeContractSyncImpl {
                   Map<Long,Long> archiveTreeContractIdMap,
                   Integer level,
                   String majarDataType,
-                  ContractInfo contractIndfo) {
+                  ContractInfo contractIndfo,Integer classify) {
 
         //新增的文件题名
         List<InformationQuery> newInformationQueryList = new ArrayList<>();
@@ -549,7 +560,7 @@ public class ArchiveTreeContractSyncImpl {
                 continue;
             }
             //生成新增的归档文件
-            ArchiveFile archiveFile = getArchiveFile(info,nodeId,info.getWbsId(),contractIndfo);
+            ArchiveFile archiveFile = getArchiveFile(info,nodeId,info.getWbsId(),contractIndfo,classify);
             newArchiveFiles.add(archiveFile);
         }
 
@@ -581,27 +592,28 @@ public class ArchiveTreeContractSyncImpl {
     }
 
 
-    public List<InformationQuery>  getInformationQuerys(Long contractId) {
+    public List<InformationQuery>  getInformationQuerys(Long contractId,Integer classify) {
         //获取某个合同段所有的电签完成的文件题名,取 id wbsid name,eVisaPdfUrl
 //        List<InformationQuery> informationQueryList = new ArrayList<>();
         informationQueryClient.getInformationByContractId1(contractId);
-        List<InformationQuery> informationQueryList = informationQueryClient.getInformationByContractId(contractId);
+        List<InformationQuery> informationQueryList = informationQueryClient.getInformationByContractId(contractId,classify);
         return informationQueryList;
 
         //互殴去
     }
 
-    public List<ArchiveFile>  getArchiveFiles(Long contractId) {
+    public List<ArchiveFile>  getArchiveFiles(Long contractId,Integer classify) {
 //        List<ArchiveFile> archiveFiles = new ArrayList<>();
-       List<ArchiveFile> archiveFiles = archiveFileClient.getListByContractId(contractId);
+       List<ArchiveFile> archiveFiles = archiveFileClient.getListByContractId(contractId,classify);
         return archiveFiles;
     }
 
-    public List<ArchiveTreeContract>  getArchiveTreeContractsWbs(Long contractId,Long attachId) {
+    public List<ArchiveTreeContract>  getArchiveTreeContractsWbs(Long contractId,Long attachId,Integer classify) {
 
         List<ArchiveTreeContract> archiveTreeContracts = 	archiveTreeContractMapper.selectList(Wrappers.<ArchiveTreeContract>query().lambda()
                 .eq(ArchiveTreeContract::getContractId, contractId)
                 .eq(ArchiveTreeContract::getExtAttachId, attachId)
+                .eq(ArchiveTreeContract::getClassify, classify)
                 .eq(ArchiveTreeContract::getExtType, 1));
         return archiveTreeContracts;
 
@@ -628,7 +640,7 @@ public class ArchiveTreeContractSyncImpl {
         }
     }
 
-    public ArchiveFile getArchiveFile(InformationQuery query,Long nodeId,Long keyId,ContractInfo contractIndfo) {
+    public ArchiveFile getArchiveFile(InformationQuery query,Long nodeId,Long keyId,ContractInfo contractIndfo,Integer classify) {
         ArchiveFile archiveFile = new ArchiveFile();
         archiveFile.setNodeId(nodeId.toString());
         archiveFile.setNodeExtId(keyId);
@@ -655,6 +667,8 @@ public class ArchiveTreeContractSyncImpl {
         archiveFile.setFileSize(query.getEVisaPdfSize());
         archiveFile.setFilePage(query.getEVisaPdfPage());
 
+        archiveFile.setClassify(classify);
+
         //
         archiveFile.setEVisaFile(query.getEVisaPdfUrl());
         archiveFile.setPdfFileUrl(query.getEVisaPdfUrl());

+ 22 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/InspectionRectifyServiceImpl.java

@@ -0,0 +1,22 @@
+package org.springblade.manager.service.impl;
+
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.manager.entity.InspectionRectify;
+import org.springblade.manager.entity.RoutingInspection;
+import org.springblade.manager.mapper.InspectionRectifyMapper;
+import org.springblade.manager.mapper.RoutingInspectionMapper;
+import org.springblade.manager.service.IInspectionRectifyService;
+import org.springblade.manager.service.IRoutingInspectionService;
+import org.springframework.stereotype.Service;
+
+@Service
+@AllArgsConstructor
+public class InspectionRectifyServiceImpl extends BaseServiceImpl<InspectionRectifyMapper, InspectionRectify> implements IInspectionRectifyService {
+
+    @Override
+    public void deleteByInspectId(Long inspectId) {
+        baseMapper.deleteByInspectId(inspectId);
+    }
+}

+ 147 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/RoutingInspectionServiceImpl.java

@@ -0,0 +1,147 @@
+package org.springblade.manager.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.AllArgsConstructor;
+import org.springblade.common.utils.ForestNodeMergerEx;
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.manager.dto.ArchiveTreeContractAutoRuleMapDTO;
+import org.springblade.manager.dto.ArchiveTreeDTO;
+import org.springblade.manager.dto.ArchiveTreeSortDTO;
+import org.springblade.manager.dto.RoutingInspectionDTO;
+import org.springblade.manager.entity.*;
+import org.springblade.manager.mapper.ArchiveAutoRuleWbsMapper;
+import org.springblade.manager.mapper.ArchiveTreeMapper;
+import org.springblade.manager.mapper.RoutingInspectionMapper;
+import org.springblade.manager.service.*;
+import org.springblade.manager.utils.DiffListUtil;
+import org.springblade.manager.utils.ForestNodeMerger;
+import org.springblade.manager.vo.*;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@AllArgsConstructor
+public class RoutingInspectionServiceImpl extends BaseServiceImpl<RoutingInspectionMapper, RoutingInspection> implements IRoutingInspectionService {
+
+    private final IInspectionRectifyService rectifyService;
+
+    @Override
+    @Transactional
+    public void add(RoutingInspectionDTO dto) {
+        //获取检查部位
+        List<InspectionRectify> list = dto.getList();
+        if (list == null || list.size() == 0){
+            throw new ServiceException("请填写检查项目");
+        }
+        //先保存巡检信息
+        Long id = SnowFlakeUtil.getId();
+        RoutingInspection inspection = new RoutingInspection();
+        BeanUtils.copyProperties(dto,inspection);
+        inspection.setId(id);
+        this.save(inspection);
+        //再保存具体的巡检项目
+        list.stream().forEach(l->l.setInspectId(id));
+        rectifyService.saveBatch(list);
+    }
+
+    @Override
+    @Transactional
+    public void Update(RoutingInspectionDTO dto) {
+        //获取检查部位
+        List<InspectionRectify> list = dto.getList();
+        if (list == null || list.size() == 0){
+            throw new ServiceException("请填写检查项目");
+        }
+        RoutingInspection inspection = new RoutingInspection();
+        BeanUtils.copyProperties(dto,inspection);
+        this.updateById(inspection);
+        //修改先删除,再保存
+        rectifyService.deleteByInspectId(dto.getId());
+        list.stream().forEach(l->l.setInspectId(dto.getId()));
+        rectifyService.saveBatch(list);
+    }
+
+    @Override
+    public IPage<RoutingInspectionVO> page(Query query, RoutingInspection inspection) {
+        IPage<RoutingInspectionVO> iPage = new Page<>(query.getCurrent(), query.getSize());
+        baseMapper.page(iPage,inspection);
+        return iPage;
+    }
+
+    @Override
+    @Transactional
+    public void delete(Long id) {
+        //先删除巡检项目
+        rectifyService.deleteByInspectId(id);
+        //再删除巡检信息
+        this.removeById(id);
+    }
+
+    @Override
+    public RoutingInspectionVO2 detail(Long id) {
+        //先查出巡检项目集合
+        List<InspectionRectify> list = rectifyService.list(new LambdaQueryWrapper<InspectionRectify>().eq(InspectionRectify::getInspectId, id));
+        //再查出巡检信息,集合设置进巡检信息
+        RoutingInspection inspection = this.getById(id);
+        RoutingInspectionVO2 vo2 = new RoutingInspectionVO2();
+        BeanUtils.copyProperties(inspection,vo2);
+        vo2.setList(list);
+        return vo2;
+    }
+
+    @Override
+    public void reviewInspect(Long id, Integer status) {
+        //判断复检状态
+        if (status == 1){
+            //复检未通过,修改复检状态为2未通过
+            this.update(new LambdaUpdateWrapper<RoutingInspection>()
+                    .set(RoutingInspection::getReviewInspectStatus,2)
+                    .eq(RoutingInspection::getId,id));
+        }else if (status == 2){
+            //复检通过,修改复检状态为3通过,修改整改状态为2不用整改
+            this.update(new LambdaUpdateWrapper<RoutingInspection>()
+                    .set(RoutingInspection::getReviewInspectStatus,3)
+                    .set(RoutingInspection::getIsRectify,2)
+                    .eq(RoutingInspection::getId,id));
+        }else {
+            throw new ServiceException("参数错误");
+        }
+    }
+
+    @Override
+    @Transactional
+    public void submitRectify(RoutingInspectionDTO dto) {
+        //修改巡检信息状态为已经整改
+        this.update(new LambdaUpdateWrapper<RoutingInspection>()
+                .set(RoutingInspection::getSubmitRectify,2)
+                .eq(RoutingInspection::getId,dto.getId()));
+        //保存检查项目
+        List<InspectionRectify> list = dto.getList();
+        rectifyService.updateBatchById(list);
+    }
+
+    @Override
+    public void revokeSubmit(Long id) {
+        //修改巡检信息为未整改
+        this.update(new LambdaUpdateWrapper<RoutingInspection>()
+                .set(RoutingInspection::getSubmitRectify,1)
+                .eq(RoutingInspection::getId,id));
+    }
+}