Browse Source

自定义排序等客户端功能

huangjn 2 years ago
parent
commit
3c500f3201
35 changed files with 543 additions and 205 deletions
  1. 12 0
      blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java
  2. 14 5
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/FixedFlow.java
  3. 1 6
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/InformationQuery.java
  4. 16 2
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/TaskClient.java
  5. 0 20
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/TaskQueryBusinessFileClient.java
  6. 32 2
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/AddContractTreeNodeVO.java
  7. 5 6
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ArchiveTaskVO.java
  8. 15 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/DiySortVO.java
  9. 0 6
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/FixedFlowVO.java
  10. 2 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/InformationQueryVO.java
  11. 47 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/WriteBatchTaskVO.java
  12. 1 1
      blade-service-api/blade-e-visa-api/src/main/java/org/springblade/evisa/feign/EVisaClient.java
  13. 6 0
      blade-service/blade-business/pom.xml
  14. 12 10
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ArchiveFileController.java
  15. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/controller/FixedFlowController.java
  16. 212 40
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  17. 4 12
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  18. 12 0
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/TaskClientImpl.java
  19. 0 51
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/TaskQueryBusinessFileClientImpl.java
  20. 4 2
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/FixedFlowMapper.xml
  21. 4 4
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml
  22. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskMapper.xml
  23. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskParallelMapper.java
  24. 4 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskParallelMapper.xml
  25. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskParallelService.java
  26. 5 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java
  27. 19 10
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java
  28. 5 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskParallelServiceImpl.java
  29. 74 14
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  30. 2 2
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/feign/EVisaClientImpl.java
  31. 1 1
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/EVisaService.java
  32. 7 6
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVisaServiceImpl.java
  33. 16 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java
  34. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreePrivateClientImpl.java
  35. 4 1
      doc/lib/备注.txt

+ 12 - 0
blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java

@@ -22,6 +22,18 @@ import java.util.stream.Collectors;
  */
 public class CommonUtil {
 
+    public static Boolean checkBigDecimal(Object value){
+        try{
+            if(value != null && StringUtils.isNotEmpty(value.toString())){
+                new BigDecimal(value.toString());
+                return true;
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return false;
+    }
+
     public static void removeFile(List<String> removeList){
         for(String fileUrl : removeList){
             try{

+ 14 - 5
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/FixedFlow.java

@@ -17,7 +17,10 @@
 package org.springblade.business.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+
 import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.core.mp.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -33,12 +36,18 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class FixedFlow extends BaseEntity {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty("项目ID")
+	private Long projectId;
+
+	@ApiModelProperty("合同段ID")
+	private Long contractId;
 
-	/**
-	* 流程名称
-	*/
-		private String fixedFlowName;
+    /**
+     * 流程名称
+     */
+    private String fixedFlowName;
 
 
 }

+ 1 - 6
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/InformationQuery.java

@@ -75,11 +75,6 @@ public class InformationQuery extends BaseEntity {
      */
 	@ApiModelProperty("资料的流程ID")
     private Long taskId;
-    /**
-     * 1未上报,2待审批,3已审批
-     */
-	@ApiModelProperty("资料流程状态,1未上报,2待审批,3已审批")
-    private Integer taskStatus;
     /**
      * 填报人ID及姓名,多人则逗号拼接,ID与姓名间用 - 隔开
      */
@@ -94,7 +89,7 @@ public class InformationQuery extends BaseEntity {
      * 上报批次,施工质检共用
      */
 	@ApiModelProperty("上报批次,施工质检共用")
-    private Integer reportNumber;
+    private String reportNumber;
     /**
      * 00施工质检未完成,10施工已完成质检未完成,01施工未完成质检已完成,11施工质检已完成
      */

+ 16 - 2
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/TaskClient.java

@@ -1,10 +1,13 @@
 package org.springblade.business.feign;
 
 import org.springblade.business.entity.Task;
+import org.springblade.business.entity.TaskParallel;
+import org.springblade.business.vo.TaskApprovalVO;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.common.constant.BusinessConstant;
 import org.springblade.core.tool.api.R;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -19,8 +22,19 @@ public interface TaskClient {
      */
     String API_PREFIX = "/api/business/task";
     String START_TASK = API_PREFIX + "/start-task";
-    String ABOLISH_TASK = API_PREFIX + "abolish-task";
-    String QUERY_FORM_DATA_ID = "query-form-data-id";
+    String ABOLISH_TASK = API_PREFIX + "/abolish-task";
+    String QUERY_FORM_DATA_ID = "/query-form-data-id";
+    String QUERY_BUSINESS_DATA = "/query-business-data";
+    String QUERY_APPROVAL_USER = "/query-approval-user";
+
+    @GetMapping(QUERY_APPROVAL_USER)
+    List<TaskParallel> queryApprovalUser(@RequestParam String formDataIds);
+
+    /**
+     * 获取业务数据
+     */
+    @GetMapping(QUERY_BUSINESS_DATA)
+    TaskApprovalVO queryBusinessData(@RequestBody TaskApprovalVO taskApprovalVO);
 
     /**
      * 根据数据源ID获取任务实例

+ 0 - 20
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/TaskQueryBusinessFileClient.java

@@ -1,20 +0,0 @@
-package org.springblade.business.feign;
-
-import org.springblade.business.vo.TaskApprovalVO;
-import org.springblade.common.constant.BusinessConstant;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-
-@FeignClient(value = BusinessConstant.APPLICATION_WEATHER_NAME)
-public interface TaskQueryBusinessFileClient {
-
-    /**
-     * 接口前缀
-     */
-    String API_PREFIX = "/api/business/taskQueryBusiness";
-
-    @GetMapping(API_PREFIX + "/queryBusinessData")
-    TaskApprovalVO queryBusinessData(@RequestBody TaskApprovalVO taskApprovalVO);
-
-}

+ 32 - 2
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/AddContractTreeNodeVO.java

@@ -3,6 +3,7 @@ package org.springblade.business.vo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Data
@@ -18,12 +19,41 @@ public class AddContractTreeNodeVO {
     private String currentNodePrimaryKeyId;
 
     @ApiModelProperty("半选集合")
-    private List<String> halfSelectedList;
+    private List<Node> halfSelectedList;
 
     @ApiModelProperty("全选集合")
-    private List<String> allSelectedList;
+    private List<Node> allSelectedList;
 
     @ApiModelProperty("新增类型")
     private String saveType;
 
+    public void setHalfSelectedList(String primaryKeyId, String nodeName){
+        if(this.halfSelectedList == null){
+            this.halfSelectedList = new ArrayList<>();
+        }
+        this.halfSelectedList.add(new Node(primaryKeyId, nodeName));
+    }
+
+    public void setAllSelectedList(String primaryKeyId, String nodeName){
+        if(this.allSelectedList == null){
+            this.allSelectedList = new ArrayList<>();
+        }
+        this.allSelectedList.add(new Node(primaryKeyId, nodeName));
+    }
+
+    @Data
+    public static class Node {
+        private String primaryKeyId;
+
+        private String nodeName;
+
+        public Node(String primaryKeyId, String nodeName){
+            this.primaryKeyId = primaryKeyId;
+            this.nodeName = nodeName;
+        }
+
+        public Node(){}
+
+    }
+
 }

+ 5 - 6
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ArchiveTaskVO.java

@@ -5,6 +5,11 @@ import lombok.Data;
 
 @Data
 public class ArchiveTaskVO {
+    /**
+     * 数据指向
+     */
+    @ApiModelProperty("列表数据的id字段,多数据时用英文逗号拼接")
+    private String ids;
 
     /**
      * 固定流程ID
@@ -30,12 +35,6 @@ public class ArchiveTaskVO {
     @ApiModelProperty("任务内容")
     private String taskContent;
 
-    /**
-     * 数据指向
-     */
-    @ApiModelProperty("列表数据的id字段,多数据时用英文逗号拼接")
-    private String archiveIds;
-
     @ApiModelProperty("限定审批时间(天)")
     private Integer restrictDay;
 

+ 15 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/DiySortVO.java

@@ -0,0 +1,15 @@
+package org.springblade.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class DiySortVO {
+
+    @ApiModelProperty("排序列表")
+    private List<String> sortList = new ArrayList<>();
+
+}

+ 0 - 6
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/FixedFlowVO.java

@@ -39,12 +39,6 @@ public class FixedFlowVO extends FixedFlow {
 	@ApiModelProperty("环节处理人姓名及ID,拼接格式为:环节处理人姓名-环节处理人ID(英文逗号)环节处理人姓名-环节处理人ID")
 	private String linkUserJoinString;
 
-	@ApiModelProperty("项目ID")
-	private Long projectId;
-
-	@ApiModelProperty("合同段ID")
-	private Long contractId;
-
 	@ApiModelProperty("环节信息")
 	private List<FixedFlowLink> fixedFlowLinkList = new ArrayList<>();
 

+ 2 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/InformationQueryVO.java

@@ -55,4 +55,6 @@ public class InformationQueryVO extends InformationQuery {
 
 	private String endTime;
 
+	private String taskStatus;
+
 }

+ 47 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/WriteBatchTaskVO.java

@@ -0,0 +1,47 @@
+package org.springblade.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class WriteBatchTaskVO {
+    /**
+     * 数据指向
+     */
+    @ApiModelProperty("列表数据的id字段,多数据时用英文逗号拼接")
+    private String ids;
+
+    /**
+     * 固定流程ID
+     */
+    @ApiModelProperty("固定流程ID")
+    private Long fixedFlowId;
+
+    /**
+     * 上报批次
+     */
+    @ApiModelProperty("上报批次")
+    private Integer batch;
+
+    /**
+     * 任务名称
+     */
+    @ApiModelProperty("任务名称")
+    private String taskName;
+
+    /**
+     * 任务内容
+     */
+    @ApiModelProperty("任务内容")
+    private String taskContent;
+
+    @ApiModelProperty("限定审批时间(天)")
+    private Integer restrictDay;
+
+    @ApiModelProperty("项目ID")
+    private String projectId;
+
+    @ApiModelProperty("合同段ID")
+    private String contractId;
+
+}

+ 1 - 1
blade-service-api/blade-e-visa-api/src/main/java/org/springblade/evisa/feign/EVisaClient.java

@@ -19,7 +19,7 @@ public interface EVisaClient {
      * 电签
      */
     @PostMapping(API_PREFIX + "/eVisa")
-    void eVisa(@RequestBody EVisaTaskApprovalVO task);
+    String eVisa(@RequestBody EVisaTaskApprovalVO task);
 
     /**
      * 创建印模

+ 6 - 0
blade-service/blade-business/pom.xml

@@ -86,6 +86,12 @@
             <groupId>org.springframework</groupId>
             <artifactId>spring-test</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-e-visa-api</artifactId>
+            <version>2.9.1.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 </project>

+ 12 - 10
blade-service/blade-business/src/main/java/org/springblade/business/controller/ArchiveFileController.java

@@ -94,18 +94,20 @@ public class ArchiveFileController extends BladeController {
 		if(taskList != null && taskList.size() > 0){
 			//执行废除
 			for(Task task : taskList){
-				this.taskClient.abolishTask(task);
+				if(new Integer("1").equals(task.getStatus())){
+					//正在审批,调用废除
+					this.taskClient.abolishTask(task);
+				} else if(new Integer("2").equals(task.getStatus())) {
+					//已审批的任务,修改业务数据的审批状态为未上报并撤签即可
+					this.archiveFileService.update(Wrappers.<ArchiveFile>lambdaUpdate().set(ArchiveFile::getStatus, 0).in(ArchiveFile::getId, Arrays.asList(task.getFormDataId().split(","))));
+					// todo ================== 调用撤签
+					// todo ================== 调用撤签
+				}
+				//保存操作记录
+				this.operationLogClient.saveUserOperationLog(26, "其它文件", "工程文件", task.getFormDataId());
 			}
-		} else {
-			//为空说明可能是已审批的任务,修改业务数据的审批状态为未上报并撤签即可
-			this.archiveFileService.update(Wrappers.<ArchiveFile>lambdaUpdate().set(ArchiveFile::getStatus, 0).in(ArchiveFile::getId, Arrays.asList(ids.split(","))));
-			// todo ================== 调用撤签
-			// todo ================== 调用撤签
 		}
 
-		//保存操作记录
-		this.operationLogClient.saveUserOperationLog(26, "其它文件", "工程文件", ids);
-
 		return R.data(true);
 	}
 
@@ -116,7 +118,7 @@ public class ArchiveFileController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "批量上报")
 	public R<Boolean> batchApproval(@RequestBody ArchiveTaskVO archiveTaskVO){
-		String archiveTaskIds = archiveTaskVO.getArchiveIds();
+		String archiveTaskIds = archiveTaskVO.getIds();
 		if(StringUtils.isNotEmpty(archiveTaskIds)){
 			//生成流程实体
 			TaskVO taskVO = new TaskVO();

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/FixedFlowController.java

@@ -168,7 +168,7 @@ public class FixedFlowController extends BladeController {
 	@PostMapping("/save")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "新增", notes = "传入fixedFlow")
-	public R save(@Valid @RequestBody FixedFlowVO vo) {
+	public R<Boolean> save(@Valid @RequestBody FixedFlowVO vo) {
 		//获取环节处理人顺序
 		String linkUserJoinString = vo.getLinkUserJoinString();
 		//生成主表主键

+ 212 - 40
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -16,25 +16,27 @@
  */
 package org.springblade.business.controller;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
+
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
 import org.apache.commons.lang.StringUtils;
-import org.springblade.business.entity.ConstructionLedger;
-import org.springblade.business.entity.ContractTreeDrawings;
-import org.springblade.business.entity.TreeContractFirst;
+import org.jetbrains.annotations.NotNull;
+import org.springblade.business.entity.*;
+import org.springblade.business.feign.OperationLogClient;
+import org.springblade.business.feign.TaskClient;
 import org.springblade.business.feignClient.ClientTreePublicCodeClientImpl;
 import org.springblade.business.service.IConstructionLedgerService;
 import org.springblade.business.service.IContractTreeDrawingsService;
 import org.springblade.business.service.ITreeContractFirstService;
-import org.springblade.business.vo.CopyContractTreeNodeVO;
-import org.springblade.business.vo.FileUserVO;
-import org.springblade.business.vo.InformationQueryVO;
-import org.springblade.business.vo.AddContractTreeNodeVO;
+import org.springblade.business.vo.*;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -53,11 +55,11 @@ import org.springblade.system.feign.IDictBizClient;
 import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
-import org.springblade.business.entity.InformationQuery;
 import org.springblade.business.service.IInformationQueryService;
 import org.springblade.core.boot.ctrl.BladeController;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  *  资料填报及查询控制器
@@ -89,6 +91,144 @@ public class InformationWriteQueryController extends BladeController {
 
 	private final IConstructionLedgerService constructionLedgerService;
 
+	private final TaskClient taskClient;
+
+	private final OperationLogClient operationLogClient;
+
+	/**
+	 * 本地验签
+	 */
+	@PostMapping("/localVerify")
+	@ApiOperationSupport(order = 21)
+	@ApiOperation(value = "本地验签")
+	public R<Boolean> localVerify(@RequestParam String ids){
+		return R.data(false);
+	}
+
+	/**
+	 * 在线验签
+	 */
+	@PostMapping("/onlineVerify")
+	@ApiOperationSupport(order = 21)
+	@ApiOperation(value = "在线验签")
+	public R<Boolean> onlineVerify(@RequestParam String ids){
+		return R.data(false);
+	}
+
+	/**
+	 * 批量打印
+	 */
+	@PostMapping("/batchPrint")
+	@ApiOperationSupport(order = 20)
+	@ApiOperation(value = "批量打印")
+	public R<String> batchPrint(@RequestParam String ids){
+		return R.data(null);
+	}
+
+	/**
+	 * 批量下载
+	 */
+	@PostMapping("/batchDownloadFileToZip")
+	@ApiOperationSupport(order = 19)
+	@ApiOperation(value = "批量下载")
+	public void batchDownloadFileToZip(String ids, HttpServletResponse response){
+
+	}
+
+	/**
+	 * 批量废除
+	 */
+	@PostMapping("/batchAbolish")
+	@ApiOperationSupport(order = 18)
+	@ApiOperation(value = "批量废除")
+	public R<Boolean> batchAbolish(@RequestParam String ids){
+		//获取所有相关任务记录
+		List<Task> taskList =  this.taskClient.queryTaskListByFormDataId(ids);
+		if(taskList != null && taskList.size() > 0){
+			//执行废除
+			for(Task task : taskList){
+				if(new Integer("1").equals(task.getStatus())){
+					//正在审批,调用废除
+					this.taskClient.abolishTask(task);
+				} else if(new Integer("2").equals(task.getStatus())) {
+					//已审批的任务,修改业务数据的审批状态为未上报并撤签即可
+					this.informationQueryService.update(Wrappers.<InformationQuery>lambdaUpdate().set(InformationQuery::getStatus, 3).in(InformationQuery::getId, Arrays.asList(task.getFormDataId().split(","))));
+					// todo ================== 调用撤签
+					// todo ================== 调用撤签
+				}
+				//保存操作记录
+				this.operationLogClient.saveUserOperationLog(6, "资料管理", "工序资料", task.getFormDataId());
+			}
+		}
+		return R.data(true);
+	}
+
+	/**
+	 * 批量上报
+	 */
+	@PostMapping("/batchTask")
+	@ApiOperationSupport(order = 17)
+	@ApiOperation(value = "批量上报")
+	public R<Boolean> batchTask(@RequestBody WriteBatchTaskVO batchTaskVO){
+		if(StringUtils.isNotEmpty(batchTaskVO.getIds())){
+			//获取数据源id
+			String[] ids = batchTaskVO.getIds().split(",");
+			if(ids.length > 0){
+				for(String id : ids){
+					//生成任务实体
+					TaskVO taskVO = new TaskVO();
+					BeanUtils.copyProperties(batchTaskVO, taskVO);
+					//设置数据源指向
+					taskVO.setFormDataId(id);
+					//设置上报类型
+					taskVO.setApprovalType(1);
+					//上报
+					if(this.taskClient.startTask(taskVO).getData()){
+						//查询审批人
+						List<TaskParallel> taskUsers = this.taskClient.queryApprovalUser(id);
+						if(taskUsers.size() > 0){
+							//生成审批人信息
+							StringBuilder stringBuilder = new StringBuilder();
+							taskUsers.forEach(users -> stringBuilder.append(",").append(users.getTaskUser()).append("-").append(users.getTaskUserName()));
+							//修改记录
+							this.informationQueryService.update(Wrappers.<InformationQuery>lambdaUpdate().set(InformationQuery::getStatus, 1).set(InformationQuery::getAuditUserIdAndName, stringBuilder.substring(1)).eq(InformationQuery::getId, id));
+						}
+					}
+				}
+				//保存操作记录
+				this.operationLogClient.saveUserOperationLog(5, "资料管理", "工序资料", batchTaskVO.getIds());
+				return R.data(true);
+			}
+		}
+		return R.data(false);
+	}
+
+	/**
+	 * 自定义排序
+	 */
+	@PostMapping("/diySort")
+	@ApiOperationSupport(order = 16)
+	@ApiOperation(value = "自定义排序")
+	public R<Boolean> diySort(@RequestBody DiySortVO vo){
+		//获取排序集合
+		List<String> sortList = vo.getSortList();
+		if(sortList.size() > 0){
+			for(int i = 0, l = sortList.size(); i < l; i ++){
+				try{
+					WbsTreeContract newData = new WbsTreeContract();
+					newData.setPKeyId(Long.parseLong(sortList.get(i)));
+					newData.setSort(i);
+					//修改排序
+					this.wbsTreeContractClient.updateContractNodeParameter(newData);
+				}catch (Exception e){
+					e.printStackTrace();
+				}
+			}
+		}
+
+		return R.data(false);
+	}
+
 	/**
 	 * 复制节点
 	 */
@@ -200,17 +340,7 @@ public class InformationWriteQueryController extends BladeController {
 				});
 			}
 		}
-		if(saveList.size() > 0){
-			//保存施工日志
-			if(saveLedger.size() > 0){
-				this.constructionLedgerService.saveBatch(saveLedger);
-			}
-
-			//保存节点
-			return R.data(this.wbsTreeContractClient.saveBatch(saveList));
-		}
-
-		return R.data(false);
+		return this.saveOrCopyNodeTree(saveList, saveLedger);
 	}
 
 	/**
@@ -346,6 +476,8 @@ public class InformationWriteQueryController extends BladeController {
 		if(StringUtils.isEmpty(node.getDeptName()) || "null".equals(String.valueOf(node.getPKeyId())) || StringUtils.isEmpty(String.valueOf(node.getPKeyId()))){
 			return R.data(-1, false , "缺少参数");
 		}
+		//保存操作记录
+		this.operationLogClient.saveUserOperationLog(3, "资料管理", "工序资料", pKeyId);
 		return R.data(this.wbsTreeContractClient.updateContractNodeParameter(node));
 	}
 
@@ -373,6 +505,8 @@ public class InformationWriteQueryController extends BladeController {
 	@ApiOperation(value = "删除节点")
 	@ApiImplicitParam(name = "ids", value = "节点的primaryKeyId")
 	public R<Boolean> removeContractTreeNode(@RequestParam String ids){
+		//保存操作记录
+		this.operationLogClient.saveUserOperationLog(4, "资料管理", "工序资料", ids);
 		return R.data(this.wbsTreeContractClient.removeContractTreeNode(ids));
 	}
 
@@ -388,9 +522,14 @@ public class InformationWriteQueryController extends BladeController {
 		WbsTreeContract treeContract = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(Long.parseLong(vo.getCurrentNodePrimaryKeyId()));
 
 		//半选
-		List<String> halfSelectedList = vo.getHalfSelectedList();
+		List<AddContractTreeNodeVO.Node> halfSelectedNodeList = vo.getHalfSelectedList();
 		//全选
-		List<String> allSelectedList = vo.getAllSelectedList();
+		List<AddContractTreeNodeVO.Node> allSelectedNodeList = vo.getAllSelectedList();
+		//勾选的数据
+		List<AddContractTreeNodeVO.Node> selectList = new ArrayList<>();
+		selectList.addAll(halfSelectedNodeList);
+		selectList.addAll(allSelectedNodeList);
+
 		//所有相关节点集合
 		List<WbsTreePrivate> selectedNodeList = new ArrayList<>();
 
@@ -398,10 +537,13 @@ public class InformationWriteQueryController extends BladeController {
 		if("1".equals(vo.getSaveType())){
 			//todo 当前节点及其子节点
 			//当前节点及其子节点时,半选说明其下的子节点并不是全部选中的,所以这时候只需要根据全选的查询其全部子节点即可
-			if(allSelectedList != null && allSelectedList.size() > 0){
+			if(allSelectedNodeList.size() > 0){
+				//获取主键
+				List<String> allSelectedList = allSelectedNodeList.stream().map(AddContractTreeNodeVO.Node::getPrimaryKeyId).distinct().collect(Collectors.toList());
+				//查询对应数据
 				selectedNodeList = this.wbsTreePrivateClient.queryByPKeyIds(allSelectedList);
 				//剔除与当前操作节点相同的ID
-				selectedNodeList.removeIf(wbsTreePrivate -> vo.getCurrentNodePrimaryKeyId().equals(wbsTreePrivate.getId().toString()));
+				selectedNodeList.removeIf(wbsTreePrivate -> treeContract.getId().equals(wbsTreePrivate.getId()));
 
 				//全选的集合则进一步向下查询
 				List<WbsTreePrivate> childList = new ArrayList<>();
@@ -424,29 +566,20 @@ public class InformationWriteQueryController extends BladeController {
 				selectedNodeList.addAll(childList);
 			}
 			//处理半选
-			if(halfSelectedList != null && halfSelectedList.size() > 0){
-				List<WbsTreePrivate> halfSelectedNodeList = this.wbsTreePrivateClient.queryByPKeyIds(halfSelectedList);
-				//剔除与当前操作节点相同的ID
-				halfSelectedNodeList.removeIf(wbsTreePrivate -> vo.getCurrentNodePrimaryKeyId().equals(wbsTreePrivate.getId().toString()));
-				//设置到集合中
-				selectedNodeList.addAll(halfSelectedNodeList);
-			}
+			this.disposeHalfSelectList(vo, halfSelectedNodeList, selectedNodeList);
 
 		} else {
 			//todo 仅当前节点操作
-			if(halfSelectedList != null && halfSelectedList.size() > 0){
+			if(halfSelectedNodeList.size() > 0){
+				//获取主键
+				List<String> halfSelectedList = halfSelectedNodeList.stream().map(AddContractTreeNodeVO.Node::getPrimaryKeyId).distinct().collect(Collectors.toList());
+				//查询数据
 				selectedNodeList = this.wbsTreePrivateClient.queryByPKeyIds(halfSelectedList);
 				//剔除与当前操作节点相同的ID
-				selectedNodeList.removeIf(wbsTreePrivate -> vo.getCurrentNodePrimaryKeyId().equals(wbsTreePrivate.getId().toString()));
-			}
-
-			if(allSelectedList != null && allSelectedList.size() > 0){
-				List<WbsTreePrivate> allSelectedNodeList = this.wbsTreePrivateClient.queryByPKeyIds(allSelectedList);
-				//剔除与当前操作节点相同的ID
-				allSelectedNodeList.removeIf(wbsTreePrivate -> vo.getCurrentNodePrimaryKeyId().equals(wbsTreePrivate.getId().toString()));
-				//设置到集合中
-				selectedNodeList.addAll(allSelectedNodeList);
+				selectedNodeList.removeIf(wbsTreePrivate -> treeContract.getId().equals(wbsTreePrivate.getId()));
 			}
+			//处理半选
+			this.disposeHalfSelectList(vo, allSelectedNodeList, selectedNodeList);
 
 		}
 
@@ -476,6 +609,18 @@ public class InformationWriteQueryController extends BladeController {
 				newData.setContractIdRelation(treeContract.getContractIdRelation());
 				newData.setContractType(treeContract.getContractType());
 				newData.setCreateTime(new Date());
+
+				//设置名称
+				Iterator<AddContractTreeNodeVO.Node> iterator = selectList.iterator();
+				while (iterator.hasNext()){
+					AddContractTreeNodeVO.Node next = iterator.next();
+					if(next.getPrimaryKeyId().equals(half.getPKeyId().toString())){
+						newData.setFullName(next.getNodeName());
+						iterator.remove();
+						break;
+					}
+				}
+
 				//设置到保存集合中
 				saveList.add(newData);
 
@@ -487,11 +632,22 @@ public class InformationWriteQueryController extends BladeController {
 			});
 		}
 
+		return this.saveOrCopyNodeTree(saveList, saveLedger);
+	}
+
+	@NotNull
+	private R<Boolean> saveOrCopyNodeTree(List<WbsTreeContract> saveList, List<ConstructionLedger> saveLedger) {
 		if(saveList.size() > 0){
 			//保存施工日志
 			if(saveLedger.size() > 0){
 				this.constructionLedgerService.saveBatch(saveLedger);
 			}
+			try{
+				//保存操作记录
+				this.operationLogClient.saveUserOperationLog(2, "资料管理", "工序资料", String.join(",", JSONArray.parseArray(JSONObject.toJSONString(saveList.stream().map(WbsTreeContract::getPKeyId).distinct().collect(Collectors.toList())), String.class)));
+			}catch (Exception e){
+				e.printStackTrace();
+			}
 			//保存节点
 			return R.data(this.wbsTreeContractClient.saveBatch(saveList));
 		}
@@ -499,6 +655,22 @@ public class InformationWriteQueryController extends BladeController {
 		return R.data(false);
 	}
 
+	/**
+	 * 处理半选集合
+	 */
+	private void disposeHalfSelectList(@RequestBody AddContractTreeNodeVO vo, List<AddContractTreeNodeVO.Node> allSelectedNodeList, List<WbsTreePrivate> selectedNodeList) {
+		if(allSelectedNodeList != null && allSelectedNodeList.size() > 0){
+			//获取主键
+			List<String> allSelectedList = allSelectedNodeList.stream().map(AddContractTreeNodeVO.Node::getPrimaryKeyId).distinct().collect(Collectors.toList());
+			//查询对应数据
+			List<WbsTreePrivate> allSelectedNodeLists = this.wbsTreePrivateClient.queryByPKeyIds(allSelectedList);
+			//剔除与当前操作节点相同的ID
+			allSelectedNodeLists.removeIf(wbsTreePrivate -> vo.getCurrentNodePrimaryKeyId().equals(wbsTreePrivate.getId().toString()));
+			//设置到集合中
+			selectedNodeList.addAll(allSelectedNodeLists);
+		}
+	}
+
 	/**
 	 * 循环查询子节点
 	 * @param parentList 父节点集合

+ 4 - 12
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -12,11 +12,8 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.jetbrains.annotations.NotNull;
-import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.entity.DefaultConfig;
 import org.springblade.business.entity.TaskParallel;
-import org.springblade.business.feign.TaskQueryBusinessFileClient;
-import org.springblade.business.service.IArchiveFileService;
 import org.springblade.business.service.IDefaultConfigService;
 import org.springblade.business.service.ITaskParallelService;
 import org.springblade.business.utils.FileUtils;
@@ -77,8 +74,6 @@ public class TaskController extends BladeController {
 
 	private final IDefaultConfigService defaultConfigService;
 
-	private final TaskQueryBusinessFileClient taskQueryBusinessFileClient;
-
 	/**
 	 * 校验电签短信验证码
 	 */
@@ -121,7 +116,7 @@ public class TaskController extends BladeController {
 		result.setFormDataId(formDataId);
 		result.setApprovalType(approvalType);
 
-		TaskApprovalVO vo = this.taskQueryBusinessFileClient.queryBusinessData(result);
+		TaskApprovalVO vo = this.taskService.queryBusinessData(result);
 		//所有文件集合
 		List<String> urlList = new ArrayList<>();
 		if(vo != null && vo.getApprovalFileList().size() > 0){
@@ -330,11 +325,8 @@ public class TaskController extends BladeController {
 		TaskApprovalVO vo = new TaskApprovalVO();
 		vo.setFormDataId(formDataId);
 		vo.setApprovalType(approvalType);
-
-		////获取具体业务数据
-		vo = this.taskQueryBusinessFileClient.queryBusinessData(vo);
-
-		return R.data(vo);
+		//获取具体业务数据
+		return R.data(this.taskService.queryBusinessData(vo));
 	}
 
 	/**
@@ -488,7 +480,7 @@ public class TaskController extends BladeController {
 	@ApiOperation(value = "完成/审批任务")
 	public R<Boolean> completeApprovalTask(@RequestBody TaskApprovalVO taskApprovalVO){
 		//工程文件
-		TaskApprovalVO archiveFileVO = this.taskQueryBusinessFileClient.queryBusinessData(taskApprovalVO);
+		TaskApprovalVO archiveFileVO = this.taskService.queryBusinessData(taskApprovalVO);
 		if(archiveFileVO != null){
 			//获取相关联的pdf
 			taskApprovalVO.setApprovalFileList(archiveFileVO.getApprovalFileList());

+ 12 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/TaskClientImpl.java

@@ -2,8 +2,10 @@ package org.springblade.business.feignClient;
 
 import lombok.AllArgsConstructor;
 import org.springblade.business.entity.Task;
+import org.springblade.business.entity.TaskParallel;
 import org.springblade.business.feign.TaskClient;
 import org.springblade.business.service.ITaskService;
+import org.springblade.business.vo.TaskApprovalVO;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.RestController;
@@ -16,6 +18,16 @@ public class TaskClientImpl implements TaskClient {
 
     private final ITaskService taskService;
 
+    @Override
+    public List<TaskParallel> queryApprovalUser(String formDataIds) {
+        return this.taskService.queryApprovalUser(formDataIds);
+    }
+
+    @Override
+    public TaskApprovalVO queryBusinessData(TaskApprovalVO taskApprovalVO) {
+        return this.taskService.queryBusinessData(taskApprovalVO);
+    }
+
     @Override
     public List<Task> queryTaskListByFormDataId(String formDataIds) {
         return this.taskService.queryTaskListByFormDataId(formDataIds);

+ 0 - 51
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/TaskQueryBusinessFileClientImpl.java

@@ -1,51 +0,0 @@
-package org.springblade.business.feignClient;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.AllArgsConstructor;
-import org.apache.commons.lang.StringUtils;
-import org.springblade.business.entity.ArchiveFile;
-import org.springblade.business.feign.TaskQueryBusinessFileClient;
-import org.springblade.business.service.IArchiveFileService;
-import org.springblade.business.vo.TaskApprovalVO;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Arrays;
-import java.util.List;
-
-@RestController
-@AllArgsConstructor
-public class TaskQueryBusinessFileClientImpl implements TaskQueryBusinessFileClient {
-
-    private final IArchiveFileService archiveFileService;
-
-    @Override
-    public TaskApprovalVO queryBusinessData(TaskApprovalVO taskApprovalVO) {
-        switch (taskApprovalVO.getApprovalType()){
-            case 1:
-                //填报数据
-                return null;
-            case 2:
-                //工程文件
-                return this.queryArchiveFileBusinessData(taskApprovalVO.getFormDataId());
-            default:
-                return null;
-        }
-    }
-
-    /**
-     * 查询工程文件
-     */
-    private TaskApprovalVO queryArchiveFileBusinessData(String formDataId){
-        List<ArchiveFile> archiveFileList = this.archiveFileService.list(Wrappers.<ArchiveFile>lambdaQuery().in(ArchiveFile::getId, Arrays.asList(formDataId.split(","))).eq(ArchiveFile::getIsDeleted, 0));
-        if(archiveFileList != null && archiveFileList.size() > 0){
-            //转换数据
-            TaskApprovalVO vo = new TaskApprovalVO();
-            for(ArchiveFile archiveFile : archiveFileList){
-                vo.setApprovalFileList(archiveFile.getFileName(), StringUtils.isEmpty(archiveFile.getPdfFileUrl()) ? archiveFile.getFileUrl() : archiveFile.getPdfFileUrl());
-            }
-            return vo;
-        }
-        return null;
-    }
-
-}

+ 4 - 2
blade-service/blade-business/src/main/java/org/springblade/business/mapper/FixedFlowMapper.xml

@@ -13,14 +13,16 @@
         <result column="status" property="status"/>
         <result column="is_deleted" property="isDeleted"/>
         <result column="fixed_flow_name" property="fixedFlowName"/>
+        <result column="project_id" property="projectId"/>
+        <result column="contract_id" property="contractId"/>
     </resultMap>
 
     <select id="countFixedFlow" resultType="java.lang.Integer">
-        select count(id) from u_fixed_flow where is_deleted = 0
+        select count(id) from u_fixed_flow where is_deleted = 0 and project_id = #{vo.projectId} and contract_id = #{vo.contractId}
     </select>
 
     <select id="selectFixedFlowPage" resultMap="fixedFlowResultMap">
-        select * from u_fixed_flow where is_deleted = 0 order by create_time DESC limit ${current}, ${size}
+        select * from u_fixed_flow where is_deleted = 0 and project_id = #{vo.projectId} and contract_id = #{vo.contractId} order by create_time DESC limit ${current}, ${size}
     </select>
 
 </mapper>

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

@@ -51,7 +51,7 @@
             is_deleted = 0
         and classify = #{query.classify}
         and contract_id = #{query.contractId}
-        <if test="query.taskStatus != null and query.taskStatus != ''"> and task_status = #{query.taskStatus} </if>
+        <if test="query.taskStatus != null and query.taskStatus != ''"> and status = #{query.taskStatus} </if>
         <if test="query.sourceType != null and query.sourceType != ''"> and source_type = #{query.sourceType} </if>
         <if test="query.reportNumber != null and query.reportNumber != ''"> and report_number = #{query.reportNumber} </if>
         <if test="query.fileUserIdAndName != null and query.fileUserIdAndName != ''"> and file_user_id_and_name like concat('%',#{query.fileUserIdAndName},'%') </if>
@@ -70,7 +70,7 @@
             query.name,
             query.number,
             query.create_time,
-            query.task_status,
+            query.status,
             query.report_number,
             query.file_user_id_and_name
         from
@@ -80,7 +80,7 @@
                 name,
                 number,
                 create_time,
-                task_status,
+                status,
                 report_number,
                 file_user_id_and_name,
                 date_format(create_time,'%Y-%m-%d') as createTimes
@@ -89,7 +89,7 @@
                 is_deleted = 0
                 and classify = #{query.classify}
                 and contract_id = #{query.contractId}
-            <if test="query.taskStatus != null and query.taskStatus != ''"> and task_status = #{query.taskStatus} </if>
+            <if test="query.taskStatus != null and query.taskStatus != ''"> and status = #{query.taskStatus} </if>
             <if test="query.sourceType != null and query.sourceType != ''"> and source_type = #{query.sourceType} </if>
             <if test="query.reportNumber != null and query.reportNumber != ''"> and report_number = #{query.reportNumber} </if>
             <if test="query.fileUserIdAndName != null and query.fileUserIdAndName != ''"> and file_user_id_and_name like concat('%',#{query.fileUserIdAndName},'%') </if>

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

@@ -31,7 +31,7 @@
     </resultMap>
 
     <select id="queryTaskListByFormDataId" resultMap="taskResultMap">
-        select id,form_data_id,process_instance_id,approval_type from u_task where form_data_id like #{formDataId} and status = 1 and is_deleted = 0
+        select id,form_data_id,process_instance_id,approval_type,status from u_task where form_data_id like #{formDataId} and status in(1,2) and is_deleted = 0
     </select>
 
     <select id="queryBatchList" resultMap="taskResultMap">

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskParallelMapper.java

@@ -29,6 +29,8 @@ import java.util.List;
  */
 public interface TaskParallelMapper extends BaseMapper<TaskParallel> {
 
+    List<TaskParallel> queryApprovalUser(@Param("processInstanceId")String processInstanceId);
+
     List<TaskParallel> queryOtherLinkList(@Param("parallelProcessInstanceId") String parallelProcessInstanceId);
 
 }

+ 4 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskParallelMapper.xml

@@ -21,6 +21,10 @@
         <result column="initiative" property="initiative"/>
     </resultMap>
 
+    <select id="queryApprovalUser" resultMap="taskParallelResultMap">
+        select task_user, task_user_name from u_task_parallel where process_instance_id = #{processInstanceId} and is_deleted = 0
+    </select>
+
     <select id="queryOtherLinkList" resultMap="taskParallelResultMap">
         select
             id,

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskParallelService.java

@@ -29,6 +29,8 @@ import java.util.List;
  */
 public interface ITaskParallelService extends BaseService<TaskParallel> {
 
+    List<TaskParallel> queryApprovalUser(String processInstanceId);
+
     List<TaskParallel> queryOtherLinkList(String parallelProcessInstanceId);
 
 }

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java

@@ -17,6 +17,7 @@
 package org.springblade.business.service;
 
 import org.springblade.business.entity.Task;
+import org.springblade.business.entity.TaskParallel;
 import org.springblade.business.vo.TaskApprovalVO;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.core.mp.base.BaseService;
@@ -31,6 +32,10 @@ import java.util.List;
  */
 public interface ITaskService extends BaseService<Task> {
 
+    List<TaskParallel> queryApprovalUser(String formDataIds);
+
+    TaskApprovalVO queryBusinessData(TaskApprovalVO taskApprovalVO);
+
     List<Task> queryTaskListByFormDataId(String ids);
 
     List<Task> queryBatchList(String projectId, String contract);

+ 19 - 10
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -13,6 +13,7 @@ import org.springblade.business.service.IInformationQueryService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springframework.stereotype.Service;
@@ -82,7 +83,7 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 			//数据ID
 //			newData.setDataId(dataId);
 			//流程状态,默认未上报
-			newData.setTaskStatus(0);
+			newData.setStatus(0);
 			//填报人ID及姓名
 			newData.setFileUserIdAndName(user.getUserId() + "-" + user.getUserName());
 			//数据源类型
@@ -107,16 +108,21 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 		List<InformationQuery> fileUserResult = this.baseMapper.queryFileUserByContractId(classify, contractId);
 
 		//获取填报人数据
-		List<String> userList = new ArrayList<>();
-		fileUserResult.forEach(user -> userList.add(user.getFileUserIdAndName()));
-		//去重
-		HashSet<String> hashSet = new HashSet<>(userList);
 		//将原本拼接的字符串拆分为userId和userName
 		List<FileUserVO> result = new ArrayList<>();
-		hashSet.forEach(user -> {
-			String[] array = user.split("-");
-			result.add(new FileUserVO(array[0], array[1]));
-		});
+		if(fileUserResult != null && fileUserResult.size() > 0){
+			List<String> userList = new ArrayList<>();
+			fileUserResult.removeIf(Objects::isNull);
+			if(fileUserResult.size() > 0){
+				fileUserResult.forEach(user -> userList.add(user.getFileUserIdAndName()));
+				//去重
+				HashSet<String> hashSet = new HashSet<>(userList);
+				hashSet.forEach(user -> {
+					String[] array = user.split("-");
+					result.add(new FileUserVO(array[0], array[1]));
+				});
+			}
+		}
 
 		return result;
 	}
@@ -149,7 +155,10 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 		if(result != null && result.size() != 0){
 			List<InformationQueryVO> voResult = JSONArray.parseArray(JSONObject.toJSONString(result), InformationQueryVO.class);
 			//处理流程状态
-			voResult.forEach(vor -> vor.setTaskStatusStr(new Integer("1").equals(vor.getTaskStatus()) ? "未上报" : new Integer("2").equals(vor.getTaskStatus()) ? "待审批" : "已审批"));
+			voResult.forEach(vor -> {
+				vor.setStartTime(DateUtil.format(vor.getCreateTime(), "yyyy-MM-dd"));
+				vor.setTaskStatusStr(new Integer("0").equals(vor.getStatus()) ? "未上报" : new Integer("1").equals(vor.getStatus()) ? "待审批" : new Integer("2").equals(vor.getStatus()) ? "已审批" : "已废除");
+			});
 
 			page.setRecords(voResult);
 			page.setTotal(count);

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskParallelServiceImpl.java

@@ -33,6 +33,11 @@ import java.util.List;
 @Service
 public class TaskParallelServiceImpl extends BaseServiceImpl<TaskParallelMapper, TaskParallel> implements ITaskParallelService {
 
+    @Override
+    public List<TaskParallel> queryApprovalUser(String processInstanceId) {
+        return this.baseMapper.queryApprovalUser(processInstanceId);
+    }
+
     @Override
     public List<TaskParallel> queryOtherLinkList(String parallelProcessInstanceId) {
         return this.baseMapper.queryOtherLinkList(parallelProcessInstanceId);

+ 74 - 14
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -1,19 +1,14 @@
  package org.springblade.business.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateUtils;
-import org.springblade.business.entity.ArchiveFile;
-import org.springblade.business.entity.FixedFlowLink;
-import org.springblade.business.entity.Task;
-import org.springblade.business.entity.TaskParallel;
+import org.springblade.business.entity.*;
 import org.springblade.business.mapper.TaskMapper;
-import org.springblade.business.service.IArchiveFileService;
-import org.springblade.business.service.IFixedFlowLinkService;
-import org.springblade.business.service.ITaskParallelService;
-import org.springblade.business.service.ITaskService;
+import org.springblade.business.service.*;
 import org.springblade.business.vo.TaskApprovalVO;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.common.utils.SnowFlakeUtil;
@@ -25,6 +20,8 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.evisa.feign.EVisaClient;
+import org.springblade.evisa.vo.EVisaTaskApprovalVO;
 import org.springblade.flow.core.constant.ProcessConstant;
 import org.springblade.flow.core.entity.BladeFlow;
 import org.springblade.flow.core.feign.IFlowClient;
@@ -61,6 +58,61 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
     private final IArchiveFileService archiveFileService;
 
+    private final EVisaClient eVisaClient;
+
+    private final IInformationQueryService informationQueryService;
+
+    @Override
+    public List<TaskParallel> queryApprovalUser(String formDataIds) {
+        //返回结果
+        List<TaskParallel> result = new ArrayList<>();
+
+        String[] formDataIdArray = formDataIds.split(",");
+        List<Long> taskIds = new ArrayList<>();
+        for(String formDataId : formDataIdArray){
+            Task task = this.baseMapper.queryTaskListByFormDataId(formDataId);
+            if(!taskIds.contains(task.getId())){
+                //查询审批人
+                List<TaskParallel> parallels = this.taskParallelService.queryApprovalUser(task.getProcessInstanceId());
+                if(parallels != null && parallels.size() > 0){
+                    result.addAll(parallels);
+                }
+                taskIds.add(task.getId());
+            }
+        }
+        return result;
+    }
+
+    @Override
+    public TaskApprovalVO queryBusinessData(TaskApprovalVO taskApprovalVO) {
+        switch (taskApprovalVO.getApprovalType()){
+            case 1:
+                //填报数据
+                return null;
+            case 2:
+                //工程文件
+                return this.queryArchiveFileBusinessData(taskApprovalVO.getFormDataId());
+            default:
+                return null;
+        }
+    }
+
+    /**
+     * 查询工程文件
+     */
+    private TaskApprovalVO queryArchiveFileBusinessData(String formDataId){
+        List<ArchiveFile> archiveFileList = this.archiveFileService.list(Wrappers.<ArchiveFile>lambdaQuery().in(ArchiveFile::getId, Arrays.asList(formDataId.split(","))).eq(ArchiveFile::getIsDeleted, 0));
+        if(archiveFileList != null && archiveFileList.size() > 0){
+            //转换数据
+            TaskApprovalVO vo = new TaskApprovalVO();
+            for(ArchiveFile archiveFile : archiveFileList){
+                vo.setApprovalFileList(archiveFile.getFileName(), StringUtils.isEmpty(archiveFile.getPdfFileUrl()) ? archiveFile.getFileUrl() : archiveFile.getPdfFileUrl());
+            }
+            return vo;
+        }
+        return null;
+    }
+
     @Override
     public List<Task> queryTaskListByFormDataId(String formDataIds) {
         List<Task> result = new ArrayList<>();
@@ -131,11 +183,11 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             //同意,执行签章
             //todo ============================ 执行电签区域 ============================
             //电签状态
-            String eVisaStatus = "1";
+            String eVisaStatus = this.eVisaClient.eVisa(JSONObject.parseObject(JSONObject.toJSONString(taskApprovalVO), EVisaTaskApprovalVO.class));
             //todo ============================ 执行电签区域 ============================
 
             //电签状态为999(错误状态)的就需要重新提交请求
-            if(!"999".equals(eVisaStatus)){
+            if("success".equals(eVisaStatus)){
                 //完成/审批当前分支流程
                 this.newFlowClient.completeApprovalTask(taskId, parallelProcessInstanceId, comment).getData();
                 //修改分支状态,改为已完成
@@ -282,7 +334,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             //设置流程信息
             vo.setProcessDefinitionId(taskFlowId);
             vo.setReportUser(AuthUtil.getUserId().toString());
-            vo.setReportUserName(AuthUtil.getUserName());
+            vo.setReportUserName(AuthUtil.getNickName());
             vo.setCreateUser(AuthUtil.getUserId());
             vo.setCreateTime(nowTime);
 
@@ -307,21 +359,29 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
     private void updateBusinessDataByFormDataId(Task task, Integer status){
         switch (task.getApprovalType()){
             case 1:
-                //填报数据
+                //资料填报
+                this.updateWriteBusinessDataStatus(task.getFormDataId(), status);
                 break;
             case 2:
                 //工程文件
-                this.updateArchiveFileBusinessDatStatus(task.getFormDataId(), status);
+                this.updateArchiveFileBusinessDataStatus(task.getFormDataId(), status);
                 break;
             default:
                 break;
         }
     }
 
+    /**
+     * 资料填报
+     */
+    private void updateWriteBusinessDataStatus(String formDataId, Integer status){
+        this.informationQueryService.update(Wrappers.<InformationQuery>lambdaUpdate().set(InformationQuery::getStatus, status).in(InformationQuery::getId, Arrays.asList(formDataId.split(","))));
+    }
+
     /**
      * 工程文件
      */
-    private void updateArchiveFileBusinessDatStatus(String formDataId, Integer status){
+    private void updateArchiveFileBusinessDataStatus(String formDataId, Integer status){
         this.archiveFileService.update(Wrappers.<ArchiveFile>lambdaUpdate().set(ArchiveFile::getStatus, status).in(ArchiveFile::getId, Arrays.asList(formDataId.split(","))));
     }
 

+ 2 - 2
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/feign/EVisaClientImpl.java

@@ -13,8 +13,8 @@ public class EVisaClientImpl implements EVisaClient {
     private final EVisaService eVisaService;
 
     @Override
-    public void eVisa(EVisaTaskApprovalVO task) {
-        this.eVisaService.eVisa(task);
+    public String eVisa(EVisaTaskApprovalVO task) {
+        return this.eVisaService.eVisa(task);
     }
 
     @Override

+ 1 - 1
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/EVisaService.java

@@ -8,7 +8,7 @@ public interface EVisaService {
     /**
      * 电签
      */
-    void eVisa(EVisaTaskApprovalVO task);
+    String eVisa(EVisaTaskApprovalVO task);
 
     /**
      * 创建印模

+ 7 - 6
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVisaServiceImpl.java

@@ -20,7 +20,7 @@ import com.alibaba.fastjson.JSONObject;
 import lombok.AllArgsConstructor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springblade.business.feign.TaskQueryBusinessFileClient;
+import org.springblade.business.feign.TaskClient;
 import org.springblade.business.vo.TaskApprovalVO;
 import org.springblade.common.constant.EVisaConstant;
 import org.springblade.common.utils.CommonUtil;
@@ -46,10 +46,10 @@ public class EVisaServiceImpl implements EVisaService {
 
     private final SignPfxClient signPfxClient;
 
-    private final TaskQueryBusinessFileClient taskQueryBusinessFileClient;
+    private final TaskClient taskClient;
 
     @Override
-    public void eVisa(EVisaTaskApprovalVO task) {
+    public String eVisa(EVisaTaskApprovalVO task) {
         //todo 这里应当是配置限制参数,初版暂时写死
         int batch = 20;
 
@@ -57,14 +57,14 @@ public class EVisaServiceImpl implements EVisaService {
         List<SignPfxFile> userPfxList = this.signPfxClient.querySignPfxByUserIdOrContractId(AuthUtil.getUserId().toString(), "");
         if(userPfxList == null || userPfxList.size() <= 0){
             //没有签章,不执行电签
-            return;
+            return "error";
         }
 
         //根据任务类型获取对应的文件信息
-        TaskApprovalVO taskFile = this.taskQueryBusinessFileClient.queryBusinessData(JSONObject.parseObject(JSONObject.toJSONString(task), TaskApprovalVO.class));
+        TaskApprovalVO taskFile = this.taskClient.queryBusinessData(JSONObject.parseObject(JSONObject.toJSONString(task), TaskApprovalVO.class));
         if(taskFile == null || taskFile.getApprovalFileList().size() <= 0){
             //没有找到业务文件,取消签章
-            return;
+            return "error";
         }
 
         //上锁
@@ -72,6 +72,7 @@ public class EVisaServiceImpl implements EVisaService {
 
         }
 
+        return "success";
     }
 
     /**

+ 16 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java

@@ -2,10 +2,13 @@ package org.springblade.manager.feign;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.mixsmart.utils.StringUtils;
 import lombok.AllArgsConstructor;
+import org.springblade.common.utils.CommonUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.NumberUtil;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.service.IContractInfoService;
 import org.springblade.manager.service.IWbsTreeContractService;
@@ -54,7 +57,19 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
 
     @Override
     public Boolean updateContractNodeParameter(WbsTreeContract node) {
-        return this.wbsTreeContractService.update(Wrappers.<WbsTreeContract>lambdaUpdate().set(WbsTreeContract::getFullName, node.getDeptName()).set(WbsTreeContract::getPartitionCode, node.getPartitionCode()).eq(WbsTreeContract::getPKeyId, node.getPKeyId()));
+
+        LambdaUpdateWrapper<WbsTreeContract> wrappers = Wrappers.lambdaUpdate();
+        if(StringUtils.isNotEmpty(node.getDeptName())){
+            wrappers.set(WbsTreeContract::getFullName, node.getDeptName());
+        }
+        if(StringUtils.isNotEmpty(node.getPartitionCode())){
+            wrappers.set(WbsTreeContract::getPartitionCode, node.getPartitionCode());
+        }
+        if(StringUtils.isNotEmpty(node.getSort()) && CommonUtil.checkBigDecimal(node.getSort())){
+            wrappers.set(WbsTreeContract::getSort, node.getSort());
+        }
+
+        return this.wbsTreeContractService.update(wrappers.eq(WbsTreeContract::getPKeyId, node.getPKeyId()));
     }
 
     @Override

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

@@ -33,7 +33,7 @@ public class WbsTreePrivateClientImpl implements WbsTreePrivateClient {
 
     @Override
     public List<WbsTreeContractTreeVOS> queryWbsTreePrivateByProjectIdAndId(String projectId, Long id) {
-        List<WbsTreePrivate> result =  this.wbsTreePrivateService.list(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, projectId).eq(WbsTreePrivate::getParentId, id).eq(WbsTreePrivate::getIsDeleted, 0));
+        List<WbsTreePrivate> result =  this.wbsTreePrivateService.list(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, projectId).eq(WbsTreePrivate::getType, 1).eq(WbsTreePrivate::getParentId, id).eq(WbsTreePrivate::getIsDeleted, 0));
         if(result != null && result.size() != 0){
             List<WbsTreeContractTreeVOS> vosResult = new ArrayList<>();
             result.forEach(wbsTreePrivate -> {

+ 4 - 1
doc/lib/备注.txt

@@ -1,4 +1,7 @@
 mvn install:install-file -Dfile=自己项目路径\doc\lib\pdfLib\aspose-cells-20.4-c.jar -DgroupId=com.aspose -DartifactId=aspose-cells -Dversion=20.4 -Dpackaging=jar
 
 
-mvn install:install-file -Dfile=自己项目路径\doc\lib\pdfLib\aspose-words-15.8.0-jdk16.jar -DgroupId=com.aspose -DartifactId=aspose-words -Dversion=15.8.0 -Dpackaging=jar
+mvn install:install-file -Dfile=自己项目路径\doc\lib\pdfLib\aspose-words-15.8.0-jdk16.jar -DgroupId=com.aspose -DartifactId=aspose-words -Dversion=15.8.0 -Dpackaging=jar
+
+
+mvn install:install-file -Dfile=自己项目路径\doc\lib\eVisaLib\PaperlessClient-4.6.0.2.jar -DgroupId=com.aspose -DartifactId=paperless-Client -Dversion=4.6.0.2 -Dpackaging=jar