Sfoglia il codice sorgente

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

# Conflicts:
#	blade-service/blade-business/src/main/java/org/springblade/business/utils/FunctionMain.java
#	blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
yangyj 3 anni fa
parent
commit
af5bf3cbfa
46 ha cambiato i file con 883 aggiunte e 928 eliminazioni
  1. 35 0
      .idea/jarRepositories.xml
  2. 2 0
      blade-common/src/main/java/org/springblade/common/constant/CommonConstant.java
  3. 1 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/OperationLogClient.java
  4. 28 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/InformationQueryVO.java
  5. 1 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/TaskVO.java
  6. 20 9
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/TextdictInfo.java
  7. 22 10
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ArchiveFileController.java
  8. 13 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractLogController.java
  9. 11 6
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ImageClassificationFileController.java
  10. 106 81
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  11. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/controller/OperationLogController.java
  12. 0 1
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/InformationQueryClientImpl.java
  13. 2 2
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/OperationLogClientImpl.java
  14. 8 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskMapper.xml
  15. 53 9
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java
  16. 6 6
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java
  17. 72 26
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  18. 5 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FirstController.java
  19. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ImageClassificationConfigController.java
  20. 8 28
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/LinkdataInfoController.java
  21. 3 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java
  22. 31 15
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TextdictInfoController.java
  23. 11 13
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsFormElementController.java
  24. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsInfoController.java
  25. 7 27
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java
  26. 7 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java
  27. 4 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml
  28. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.java
  29. 4 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml
  30. 4 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TextdictInfoMapper.xml
  31. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.java
  32. 9 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.xml
  33. 9 30
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  34. 23 155
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  35. 23 26
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml
  36. 7 22
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
  37. 35 234
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  38. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsFormElementService.java
  39. 2 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java
  40. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java
  41. 15 6
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  42. 164 101
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java
  43. 14 14
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  44. 43 19
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  45. 64 48
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java
  46. 1 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/wrapper/ProjectInfoWrapper.java

+ 35 - 0
.idea/jarRepositories.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="aliyun-repos" />
+      <option name="name" value="aliyun-repos" />
+      <option name="url" value="https://maven.aliyun.com/repository/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="blade-release" />
+      <option name="name" value="Release Repository" />
+      <option name="url" value="http://nexus.bladex.vip/repository/maven-releases/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="com.e-iceblue" />
+      <option name="name" value="e-iceblue" />
+      <option name="url" value="https://repo.e-iceblue.cn/repository/maven-public/" />
+    </remote-repository>
+  </component>
+</project>

+ 2 - 0
blade-common/src/main/java/org/springblade/common/constant/CommonConstant.java

@@ -58,6 +58,8 @@ public interface CommonConstant {
 	 */
 	String DEFAULT_PARAM_PASSWORD = "account.initPassword";
 
+	String SYS_LOCAL_URL = "sys.local.url";
+
 	/**
 	 * 默认排序字段
 	 */

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

@@ -19,6 +19,6 @@ public interface OperationLogClient {
      * @param operationObjId 操作的业务对象ID
      */
     @PostMapping(API_PREFIX + "/saveUserOperationLog")
-    void saveUserOperationLog(@RequestBody Integer type, @RequestParam String operationModule, @RequestParam String operationView, @RequestParam Object operationObjId);
+    void saveUserOperationLog(@RequestBody Integer type, @RequestParam String operationModule, @RequestParam String operationView, @RequestParam Object operationObjId, @RequestParam String operationObjName);
 
 }

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

@@ -21,6 +21,7 @@ import org.springblade.business.entity.InformationQuery;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -62,4 +63,31 @@ public class InformationQueryVO extends InformationQuery {
 
 	private String isFirst;
 
+	@ApiModelProperty("上报批次")
+	private String reportNumber;
+
+	@ApiModelProperty("任务人")
+	private List<WaitingUser> waitingUserList;
+
+	public void setWaitingUserList(String waitingUserName, Integer status){
+		if(this.waitingUserList == null){
+			this.waitingUserList = new ArrayList<>();
+		}
+		this.waitingUserList.add(new WaitingUser(waitingUserName, status));
+	}
+
+	@Data
+	private class WaitingUser {
+		@ApiModelProperty("审批人姓名")
+		private String waitingUserName;
+
+		@ApiModelProperty("审批状态,1未签字(黑色),2已签字(绿色),3已废除(黄色),999签字异常(红色)")
+		private Integer status;
+
+		public WaitingUser(String waitingUserName, Integer status){
+			this.waitingUserName = waitingUserName;
+			this.status = status;
+		}
+	}
+
 }

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/TaskVO.java

@@ -48,7 +48,7 @@ public class TaskVO extends Task {
 	private String taskId;
 
 	@ApiModelProperty("审批人集合")
-	List<WaitingUser> waitingUserList = new ArrayList<>();
+	private List<WaitingUser> waitingUserList = new ArrayList<>();
 
 	public void setWaitingUserList(String waitingUserName, Integer status){
 		this.waitingUserList.add(new WaitingUser(waitingUserName, status));

+ 20 - 9
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/TextdictInfo.java

@@ -57,14 +57,6 @@ import lombok.EqualsAndHashCode;
 	* 类型
 	*/
 		private Integer type;
-	/**
-	* html 坐标
-	*/
-		private String trTd;
-	/**
-	*  xy 坐标
-	*/
-		private String xy;
 
 	/**
 	 * 表单Id
@@ -75,10 +67,29 @@ import lombok.EqualsAndHashCode;
 	 * 元素key
 	 */
 	private String colKey;
+
+	/**
+	 * 列中文名
+	 * */
+	private String colName;
 	/**
-	 * 签字人角色
+	 * 签字角色Id
 	 */
 	private String sigRoleId;
+	/**
+	 * 签字角色名称
+	 */
+	private String sigRoleName;
+
+	/**
+	 * 偏移坐标X
+	 */
+	private double pyzbx;
+
+	/**
+	 * 偏移坐标Y
+	 */
+	private double pyzby;
 
 	/**
 	 * 是否删除

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

@@ -153,12 +153,12 @@ public class ArchiveFileController extends BladeController {
 					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.archiveFileService.update(Wrappers.<ArchiveFile>lambdaUpdate().set(ArchiveFile::getEVisaFile, null).set(ArchiveFile::getStatus, 0).in(ArchiveFile::getId, Arrays.asList(task.getFormDataId().split(","))));
 				}
+				ArchiveFile archiveFile = this.archiveFileService.getBaseMapper().selectById(task.getFormDataId());
+
 				//保存操作记录
-				this.operationLogClient.saveUserOperationLog(26, "其它文件", "工程文件", task.getFormDataId());
+				this.operationLogClient.saveUserOperationLog(26, "其它文件", "工程文件", task.getFormDataId(), archiveFile.getFileName());
 			}
 		}
 
@@ -180,8 +180,14 @@ public class ArchiveFileController extends BladeController {
 			taskVO.setFormDataId(archiveTaskIds);
 			taskVO.setApprovalType(2);
 
+			List<ArchiveFile> archiveFiles = this.archiveFileService.getBaseMapper().selectBatchIds(Arrays.asList(archiveTaskIds.split(",")));
+			String title = "工程文件批量上报";
+			if(archiveFiles != null && archiveFiles.size() > 0){
+				title = archiveFiles.stream().map(ArchiveFile::getFileName).distinct().collect(Collectors.joining());
+			}
+
 			//新增操作日志
-			this.operationLogClient.saveUserOperationLog(25, "其它文件", "工程文件", archiveTaskIds);
+			this.operationLogClient.saveUserOperationLog(25, "其它文件", "工程文件", archiveTaskIds, title);
 
 			//启动流程
 			this.taskClient.startTask(taskVO);
@@ -284,12 +290,18 @@ public class ArchiveFileController extends BladeController {
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "逻辑删除", notes = "传入ids")
 	public R<Boolean> remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		//保存操作日志
-		this.operationLogClient.saveUserOperationLog(27, "其他文件", "工程文件", ids);
-		//保存回收站记录
+		List<ArchiveFile> fileList =  this.archiveFileService.list(Wrappers.<ArchiveFile>lambdaQuery().in(ArchiveFile::getId, Arrays.asList(ids.split(","))));
+
 		try{
-			List<ArchiveFile> fileList =  this.archiveFileService.list(Wrappers.<ArchiveFile>lambdaQuery().in(ArchiveFile::getId, Arrays.asList(ids.split(","))));
-			this.recycleBinClient.saveDelBusinessData(ids, fileList.stream().map(ArchiveFile::getFileName).collect(Collectors.joining(",")), 1, null, fileList.get(0).getProjectId(), fileList.get(0).getContractId());
+			if(fileList != null && fileList.size() > 0){
+				String title = fileList.stream().map(ArchiveFile::getFileName).distinct().collect(Collectors.joining(","));
+
+				//保存操作日志
+				this.operationLogClient.saveUserOperationLog(27, "其他文件", "工程文件", ids, title);
+
+				//保存回收站记录
+				this.recycleBinClient.saveDelBusinessData(ids, title, 1, null, fileList.get(0).getProjectId(), fileList.get(0).getContractId());
+			}
 		}catch (Exception e){
 			e.printStackTrace();
 		}

+ 13 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractLogController.java

@@ -27,6 +27,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 日志通用表 控制器
@@ -79,8 +80,11 @@ public class ContractLogController extends BladeController {
 					// todo ================== 调用撤签
 					// todo ================== 调用撤签
 				}
+
+				ContractLog contractLog = this.contractLogService.getBaseMapper().selectById(task.getFormDataId());
+
 				//保存操作记录
-				this.operationLogClient.saveUserOperationLog(9, "台账日志", "日志填报", task.getFormDataId());
+				this.operationLogClient.saveUserOperationLog(9, "台账日志", "日志填报", task.getFormDataId(), contractLog.getFileName());
 			}
 		}
 		return R.data(true);
@@ -111,8 +115,15 @@ public class ContractLogController extends BladeController {
 						this.contractLogService.update(Wrappers.<ContractLog>lambdaUpdate().set(ContractLog::getStatus, 1).eq(ContractLog::getId, id));
 					}
 				}
+
+				List<ContractLog> contractLogs = this.contractLogService.getBaseMapper().selectBatchIds(Arrays.asList(startTaskVO.getIds().split(",")));
+				String title = "批量上报";
+				if(contractLogs != null && contractLogs.size() > 0){
+					title = contractLogs.stream().map(ContractLog::getFileName).distinct().collect(Collectors.joining());
+				}
+
 				//保存操作记录
-				this.operationLogClient.saveUserOperationLog(8, "台账日志", "日志填报", startTaskVO.getIds());
+				this.operationLogClient.saveUserOperationLog(8, "台账日志", "日志填报", startTaskVO.getIds(), title);
 				return R.data(true);
 			}
 		}

+ 11 - 6
blade-service/blade-business/src/main/java/org/springblade/business/controller/ImageClassificationFileController.java

@@ -178,7 +178,7 @@ public class ImageClassificationFileController extends BladeController {
 									//参见号
 									sheet.getRow(28).getCell(4).setCellValue(file.getSeeAlsoCode());
 									//拍摄时间
-									sheet.getRow(30).getCell(4).setCellValue(DateUtil.format(file.getShootingTime(), "yyyy-MM-dd HH:mm:ss"));
+									sheet.getRow(30).getCell(4).setCellValue(DateUtil.format(file.getShootingTime(), "yyyy-MM-dd"));
 									//参见号
 									sheet.getRow(32).getCell(4).setCellValue(file.getShootingUser());
 
@@ -559,12 +559,17 @@ public class ImageClassificationFileController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "影音资料信息逻辑删除", notes = "传入ids")
 	public R<Boolean> remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		//保存操作日志
-		this.operationLogClient.saveUserOperationLog(31, "其它文件", "影像资料", ids);
-		//保存回收站记录
+
+		List<ImageClassificationFile> fileList = this.imageClassificationFileService.list(Wrappers.<ImageClassificationFile>lambdaQuery().in(ImageClassificationFile::getId, Arrays.asList(ids.split(","))));
+
 		try{
-			List<ImageClassificationFile> fileList = this.imageClassificationFileService.list(Wrappers.<ImageClassificationFile>lambdaQuery().in(ImageClassificationFile::getId, Arrays.asList(ids.split(","))));
-			this.recycleBinClient.saveDelBusinessData(ids, fileList.stream().map(ImageClassificationFile::getFileName).distinct().collect(Collectors.joining(",")), 1, null, fileList.get(0).getProjectId().toString(), fileList.get(0).getContractId().toString());
+			String title = fileList.stream().map(ImageClassificationFile::getFileName).distinct().collect(Collectors.joining(","));
+
+			//保存操作日志
+			this.operationLogClient.saveUserOperationLog(31, "其它文件", "影像资料", ids, title);
+
+			//保存回收站记录
+			this.recycleBinClient.saveDelBusinessData(ids, title, 1, null, fileList.get(0).getProjectId().toString(), fileList.get(0).getContractId().toString());
 		}catch (Exception e){
 			e.printStackTrace();
 		}

+ 106 - 81
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -24,12 +24,13 @@ import org.springblade.business.service.IContractTreeDrawingsService;
 import org.springblade.business.service.ITreeContractFirstService;
 import org.springblade.business.utils.FileUtils;
 import org.springblade.business.vo.*;
+import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.jackson.JsonUtil;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.evisa.feign.EVisaClient;
@@ -42,6 +43,7 @@ import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springblade.manager.feign.WbsTreePrivateClient;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
+import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
 import org.springframework.beans.BeanUtils;
@@ -94,11 +96,16 @@ public class InformationWriteQueryController extends BladeController {
 
 	private final RecycleBinClient recycleBinClient;
 
+	private final NewIOSSClient newIOSSClient;
+
+	/**
+	 * 初始化合同段导图树
+	 */
 	@PostMapping("/initMappingStructureTree")
 	@ApiOperationSupport(order = 27)
 	@ApiOperation(value = "初始化合同段导图树(只有接口,功能未写)")
 	public R<List<WbsTreeContractTreeVOS>> initMappingStructureTree(@RequestBody List<String> ids){
-
+		System.out.println(ids);
 		return null;
 	}
 
@@ -222,8 +229,10 @@ public class InformationWriteQueryController extends BladeController {
 	@ApiOperation(value = "复制节点填报数据")
 	public R<Boolean> copyContractNodeSubmitBusinessData(@RequestBody CopyContractTreeNodeVO copyVO){
 		if(StringUtils.isNotEmpty(copyVO.getNeedCopyPrimaryKeyId()) && copyVO.getCopyBatchToPaths().size() > 0){
+		    //查询被复制节点
+            WbsTreeContract wbsTreeContract = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(copyVO.getNeedCopyPrimaryKeyId());
 			//获取被复制节点的表格
-			List<WbsTreeContract> tableList = this.wbsTreeContractClient.queryChildByParentId(this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(copyVO.getNeedCopyPrimaryKeyId()), "queryTable", "");
+			List<WbsTreeContract> tableList = this.wbsTreeContractClient.queryChildByParentId(wbsTreeContract, "queryTable", "");
 			if(tableList != null && tableList.size() > 0){
 				//获取合同段信息
 				ContractInfo contract = this.contractClient.getContractById(Long.parseLong(tableList.get(0).getContractId()));
@@ -232,9 +241,10 @@ public class InformationWriteQueryController extends BladeController {
 					String removeString = new Integer("1").equals(contract.getContractType()) ? "1,2,3" : "5,6,7";
 					//删除掉不符合条件的数据
 					tableList.removeIf(table -> Arrays.asList(removeString.split(",")).contains(table.getTableType().toString()));
-				}
-				if(tableList.size() <= 0){
-					return R.data(300, false, "当前合同段已开启数据隔离,当前节点下未找到符合复制条件的数据");
+
+                    if(tableList.size() <= 0){
+                        return R.data(300, false, "当前合同段已开启数据隔离,当前节点下未找到符合复制条件的数据");
+                    }
 				}
 
 				//获取表格的业务数据
@@ -256,13 +266,22 @@ public class InformationWriteQueryController extends BladeController {
 
 				//获取数据写入的节点信息
 				List<CopyContractTreeNodeVO.CopyBatch> batchPathList = copyVO.getCopyBatchToPaths();
+				//删除数据SQL
+                List<String> removeSqlList = new ArrayList<>();
 				//新增数据SQL
 				List<String> saveSqlList = new ArrayList<>();
 				for(CopyContractTreeNodeVO.CopyBatch copyBatch : batchPathList){
 					//获取表格信息
 					List<WbsTreeContract> copyToTableList = this.wbsTreeContractClient.queryChildByParentId(this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(copyBatch.getPrimaryKeyId()), "queryTable", "");
 					if(copyToTableList != null && copyToTableList.size() > 0){
-						//检测是否表格是否存在差异(如果存在oldId则优先使用这个字段,不存在时才使用id)
+                        //首先,记录数据删除sql
+                        for(WbsTreeContract table : copyToTableList){
+                            if(StringUtils.isNotEmpty(table.getInitTableName())){
+                                removeSqlList.add("delete from " + table.getInitTableName() + " where p_key_id = " + table.getPKeyId());
+                            }
+                        }
+
+						//其次,检测是否表格是否存在差异(如果存在oldId则优先使用这个字段,不存在时才使用id)
 						List<WbsTreeContract> remainTableList = copyToTableList.stream().filter(toTable -> tableBusinessDataMap.containsKey(StringUtils.isNotEmpty(toTable.getOldId()) ? toTable.getOldId() : toTable.getId().toString())).collect(Collectors.toList());
 						//循环有数据的表格
 						for(WbsTreeContract remainTable : remainTableList){
@@ -307,8 +326,14 @@ public class InformationWriteQueryController extends BladeController {
 						}
 					}
 				}
-				//保存数据
-				JsonUtil.toJson(saveSqlList);
+                //删除原本填写的数据
+                if(removeSqlList.size() > 0){
+                    for(String sql : removeSqlList){
+                        this.jdbcTemplate.execute(sql);
+                    }
+                }
+
+				//保存新获取的数据
 				if(saveSqlList.size() > 0){
 					for(String sql : saveSqlList){
 						this.jdbcTemplate.execute(sql);
@@ -418,6 +443,7 @@ public class InformationWriteQueryController extends BladeController {
 	@ApiOperationSupport(order = 21)
 	@ApiOperation(value = "本地验签")
 	public R<Boolean> localVerify(@RequestParam String ids){
+		System.out.println(ids);
 		return R.data(false);
 	}
 
@@ -446,7 +472,23 @@ public class InformationWriteQueryController extends BladeController {
     @ApiOperationSupport(order = 20)
     @ApiOperation(value = "批量打印")
     public R<String> batchPrint(@RequestParam String ids) {
-        return R.data(null);
+		//获取勾选的数据
+    	List<InformationQuery> queries = this.informationQueryService.getBaseMapper().selectBatchIds(Arrays.asList(ids.split(",")));
+    	//获取pdf
+		List<String> pdfList = queries.stream().map(query -> StringUtils.isNotEmpty(query.getEVisaPdfUrl()) ? query.getEVisaPdfUrl() : query.getPdfUrl()).distinct().collect(Collectors.toList());
+    	pdfList.removeIf(StringUtils::isEmpty);
+    	//执行合并
+		String mergeName = SnowFlakeUtil.getId() + ".pdf", mergeUrl = "/Users/doc/print/" + mergeName;
+		FileUtils.mergePdfPublicMethods(pdfList, mergeUrl);
+
+		//上传
+		BladeFile bladeFile = this.newIOSSClient.uploadFile(mergeName, mergeUrl);
+		if(StringUtils.isNotEmpty(bladeFile.getLink())){
+			//执行本地文件删除
+			CommonUtil.removeFile(Arrays.asList(mergeUrl.split(",")));
+		}
+
+        return R.data(bladeFile.getLink());
     }
 
     /**
@@ -482,7 +524,7 @@ public class InformationWriteQueryController extends BladeController {
 	@ApiOperation(value = "批量废除")
 	public R<Boolean> batchAbolish(@RequestParam String ids){
 		//获取所有相关任务记录
-		List<Task> taskList =  this.taskClient.queryTaskListByFormDataId(ids);
+		List<Task> taskList = this.taskClient.queryTaskListByFormDataId(ids);
 		if(taskList != null && taskList.size() > 0){
 			try{
 				//执行废除
@@ -500,8 +542,15 @@ public class InformationWriteQueryController extends BladeController {
 
 						this.informationQueryService.update(wrapper.in(InformationQuery::getId, Arrays.asList(task.getFormDataId().split(","))));
 					}
+
+					List<InformationQuery> queries = this.informationQueryService.getBaseMapper().selectBatchIds(Arrays.asList(task.getFormDataId().split(",")));
+					String title = "批量废除";
+					if(queries != null && queries.size() > 0){
+						title = queries.stream().map(InformationQuery::getName).distinct().collect(Collectors.joining());
+					}
+
 					//保存操作记录
-					this.operationLogClient.saveUserOperationLog(6, "资料管理", "工序资料", task.getFormDataId());
+					this.operationLogClient.saveUserOperationLog(6, "资料管理", "工序资料", task.getFormDataId(), title);
 				}
 				return R.data(true, "废除成功");
 			}catch (Exception e){
@@ -549,8 +598,15 @@ public class InformationWriteQueryController extends BladeController {
 					e.printStackTrace();
 					return R.data(300, false, "上报失败");
 				}
+
+				List<InformationQuery> queries = this.informationQueryService.getBaseMapper().selectBatchIds(Arrays.asList(startTaskVO.getIds().split(",")));
+				String title = "批量上报";
+				if(queries != null && queries.size() > 0){
+					title = queries.stream().map(InformationQuery::getName).distinct().collect(Collectors.joining());
+				}
+
 				//保存操作记录
-				this.operationLogClient.saveUserOperationLog(5, "资料管理", "工序资料", startTaskVO.getIds());
+				this.operationLogClient.saveUserOperationLog(5, "资料管理", "工序资料", startTaskVO.getIds(), title);
 				return R.data(true);
 			}
 		}
@@ -736,7 +792,7 @@ public class InformationWriteQueryController extends BladeController {
 				});
 			}
 		}
-		return this.saveOrCopyNodeTree(saveList, saveLedger);
+		return this.saveOrCopyNodeTree(saveList, saveLedger, 32);
 	}
 
 	/**
@@ -853,13 +909,19 @@ public class InformationWriteQueryController extends BladeController {
 				}
 				//处理子节点
 				if(vos.getChildren() != null && vos.getChildren().size() > 0){
+					// 去掉首件
+					List<WbsTreeContractTreeVOS> children = vos.getChildren();
+					children = children.stream().filter(vo->vo.getDeptCategory()!=111).collect(Collectors.toList());
+					vos.setChildren(children);
 					//循环处理节点颜色
-					this.foreachSetNodeColor(vos.getChildren(), queryDataResult);
+					this.foreachSetNodeColor(children, queryDataResult);
 				}
-
 			});
 		}
 
+
+
+
 		return R.data(result);
 	}
 
@@ -952,8 +1014,11 @@ 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 , "缺少参数");
 		}
+
+		WbsTreeContract queries = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(pKeyId);
+
 		//保存操作记录
-		this.operationLogClient.saveUserOperationLog(3, "资料管理", "工序资料", pKeyId);
+		this.operationLogClient.saveUserOperationLog(3, "资料管理", "工序资料", pKeyId, StringUtils.isNotEmpty(queries.getFullName()) ? queries.getFullName() : queries.getDeptName());
 		return R.data(this.wbsTreeContractClient.updateContractNodeParameter(node));
 	}
 
@@ -989,6 +1054,7 @@ public class InformationWriteQueryController extends BladeController {
 		List<Long> removeList = removeNodeList.stream().map(WbsTreeContract::getPKeyId).distinct().collect(Collectors.toList());
 		//拼接
 		ids = ids + "," + String.join(",", JSONArray.parseArray(JSONObject.toJSONString(removeList), String.class));
+		String nodeName = StringUtils.isNotEmpty(removeNode.getFullName()) ? removeNode.getFullName() : removeNode.getDeptName() + "," + removeNodeList.stream().map(wbs -> StringUtils.isNotEmpty(wbs.getFullName()) ? wbs.getFullName() : wbs.getDeptName()).collect(Collectors.joining());
 
 		//获取当前节点下所有填报节点
 		List<QueryProcessDataVO> queryProcess = this.informationQueryService.queryProcessDataByParentIdAndContractId(removeNode.getId().toString(), 1, removeNode.getContractId());
@@ -1008,7 +1074,7 @@ public class InformationWriteQueryController extends BladeController {
 		}
 
 		//保存操作记录
-		this.operationLogClient.saveUserOperationLog(4, "资料管理", "工序资料", ids);
+		this.operationLogClient.saveUserOperationLog(4, "资料管理", "工序资料", ids, nodeName);
 		//保存进回收站
 		this.recycleBinClient.saveDelBusinessData(ids, removeNode.getDeptName(), 2, "", removeNode.getProjectId(), removeNode.getContractId());
 
@@ -1114,7 +1180,7 @@ public class InformationWriteQueryController extends BladeController {
 				newData.setOldId(half.getId().toString());
 				//设置合同段等信息
 				newData.setWbsType(treeContract.getWbsType());
-				newData.setContractId(vo.getContractId());
+				newData.setContractId(treeContract.getContractId());
 				newData.setContractIdRelation(treeContract.getContractIdRelation());
 				newData.setContractType(treeContract.getContractType());
 				newData.setCreateTime(new Date());
@@ -1170,7 +1236,7 @@ public class InformationWriteQueryController extends BladeController {
 			});
 		}
 
-		return this.saveOrCopyNodeTree(saveList, saveLedger);
+		return this.saveOrCopyNodeTree(saveList, saveLedger, 2);
 	}
 
 	private List<WbsTreePrivate> unifiedCode(List<AddContractTreeNodeVO.Node> allSelectedNodeList, WbsTreeContract treeContract){
@@ -1185,7 +1251,7 @@ public class InformationWriteQueryController extends BladeController {
 	}
 
 	@NotNull
-	private R<Boolean> saveOrCopyNodeTree(List<WbsTreeContract> saveList, List<ConstructionLedger> saveLedger) {
+	private R<Boolean> saveOrCopyNodeTree(List<WbsTreeContract> saveList, List<ConstructionLedger> saveLedger, Integer operationType) {
 		if(saveList.size() > 0){
 			//保存施工日志
 			if(saveLedger.size() > 0){
@@ -1193,7 +1259,10 @@ public class InformationWriteQueryController extends BladeController {
 			}
 			try{
 				//保存操作记录
-				this.operationLogClient.saveUserOperationLog(2, "资料管理", "工序资料", String.join(",", JSONArray.parseArray(JSONObject.toJSONString(saveList.stream().map(WbsTreeContract::getPKeyId).distinct().collect(Collectors.toList())), String.class)));
+				this.operationLogClient.saveUserOperationLog(operationType, "资料管理", "工序资料",
+						String.join(",", JSONArray.parseArray(JSONObject.toJSONString(saveList.stream().map(WbsTreeContract::getPKeyId).distinct().collect(Collectors.toList())), String.class)),
+						saveList.stream().map(wbs -> StringUtils.isNotEmpty(wbs.getFullName()) ? wbs.getFullName() : wbs.getDeptName()).collect(Collectors.joining()));
+
 			}catch (Exception e){
 				e.printStackTrace();
 			}
@@ -1407,62 +1476,8 @@ public class InformationWriteQueryController extends BladeController {
 			@ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
 	})
 	public R<List<WbsTreeContractTreeVOS>> queryContractWbsTreeByContractIdAndType(@RequestParam String parentId, @RequestParam String contractId, @RequestParam String contractIdRelation){
-		List<WbsTreeContractTreeVOS> rootTreeNode;
-
-		//获取合同段,检查是否是监理合同段
-		ContractInfo contractInfo = this.contractClient.getContractById(Long.parseLong(contractId));
-		if(new Integer("2").equals(contractInfo.getContractType())){
-			//监理合同段,需要获取关联的施工方合同段根节点数据
-			rootTreeNode = this.wbsTreeContractClient.lazyTree(StringUtils.isNotEmpty(parentId) ? Long.parseLong(parentId) : 0, contractId, contractIdRelation, contractInfo.getContractType());
-		} else {
-			if(com.alibaba.nacos.common.utils.StringUtils.isEmpty(parentId)){
-				//为空,说明初始化
-				//获取根节点
-				rootTreeNode = this.clientTreePublicCodeClient.queryContractWbsTreeByContractIdAndType(contractId, 1, "0");
-			} else {
-				//不为空,获取其下子节点
-				rootTreeNode = this.wbsTreeContractClient.queryContractWbsTreeByContractIdAndType(contractId, 1, parentId);
-			}
-		}
-
-		//其他参数
-		if(rootTreeNode != null && rootTreeNode.size() > 0){
-			//获取当前父节点下所有工序节点及填报资料
-			List<QueryProcessDataVO> queryDataResult;
-			if(new Integer("2").equals(contractInfo.getContractType())){
-				queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractId(parentId, 2, contractIdRelation);
-			} else {
-				queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractId(parentId, 1, contractId);
-			}
-
-			rootTreeNode.forEach(vo -> {
-				String primaryKeyId = new Integer("2").equals(contractInfo.getContractType()) ? vo.getId().toString() : vo.getPrimaryKeyId();
-
-				if(new Integer("1").equals(contractInfo.getContractType())){
-					if(StringUtils.isEmpty(parentId) || "0".equals(parentId)){
-						vo.setTitle(contractInfo.getContractName());
-					}
-				}
-
-				//获取上传的图纸
-				ContractTreeDrawings drawings = this.contractTreeDrawingsService.queryCurrentNodeDrawings(primaryKeyId);
-				if(drawings != null){
-					//主键
-					vo.setDrawingsId(drawings.getId());
-					//文件路径
-					vo.setFileUrl(drawings.getFileUrl());
-				}
-
-				//处理颜色
-				if(queryDataResult != null && queryDataResult.size() > 0){
-					this.setNodeColor(vo, queryDataResult, true);
-				}
-
-				//判断当前节点是否被标记为首件
-				TreeContractFirst first = this.treeContractFirstService.getOne(Wrappers.<TreeContractFirst>lambdaQuery().eq(TreeContractFirst::getIsDeleted, 0).eq(TreeContractFirst::getWbsNodeId, primaryKeyId));
-				vo.setIsFirst(first != null);
-			});
-		}
+		List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation);
+		rootTreeNode = rootTreeNode.stream().filter(vo -> vo.getDeptCategory() != 111).collect(Collectors.toList());
 
 		return R.data(rootTreeNode);
 	}
@@ -1589,6 +1604,17 @@ public class InformationWriteQueryController extends BladeController {
 			@ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
 	})
 	public R<List<WbsTreeContractTreeVOS>> queryContractWbsTreeByFirstInfo(@RequestParam String parentId, @RequestParam String contractId, @RequestParam String contractIdRelation){
+		List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation);
+		//查询被标记为首件的数据
+		rootTreeNode = rootTreeNode.stream().filter(WbsTreeContractTreeVOS::getIsFirst).collect(Collectors.toList());
+
+		return R.data(rootTreeNode);
+	}
+
+	/**
+	 * 查询合同段划分树公共代码
+	 */
+	private List<WbsTreeContractTreeVOS> queryContractTree(String parentId, String contractId, String contractIdRelation){
 		List<WbsTreeContractTreeVOS> rootTreeNode;
 
 		//获取合同段,检查是否是监理合同段
@@ -1646,8 +1672,7 @@ public class InformationWriteQueryController extends BladeController {
 			});
 		}
 
-		rootTreeNode = rootTreeNode.stream().filter(wbsbenan->wbsbenan.getIsFirst()==true).collect(Collectors.toList());
-		return R.data(rootTreeNode);
+		return rootTreeNode;
 	}
-	
+
 }

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

@@ -127,7 +127,7 @@ public class OperationLogController extends BladeController {
 			String endTime = operationLog.getEndTime();
 			endTime = DateUtil.format(DateUtils.addDays(DateUtil.parse(endTime, "yyyy-MM-dd"), 1), "yyyy-MM-dd");
 			try{
-				wrapper.lambda().between(OperationLog::getOperationTime, operationLog.getStartTime(), endTime);
+				wrapper.lambda().between(OperationLog::getCreateTime, operationLog.getStartTime(), endTime);
 			}catch (Exception e){
 				e.printStackTrace();
 			}

+ 0 - 1
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/InformationQueryClientImpl.java

@@ -3,7 +3,6 @@ package org.springblade.business.feignClient;
 import lombok.AllArgsConstructor;
 import org.springblade.business.feign.InformationQueryClient;
 import org.springblade.business.service.IInformationQueryService;
-import org.springblade.core.secure.BladeUser;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController

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

@@ -24,7 +24,7 @@ public class OperationLogClientImpl implements OperationLogClient {
     private final IDictBizClient dictBizClient;
 
     @Override
-    public void saveUserOperationLog(Integer type, String operationModule, String operationView, Object operationObjId) {
+    public void saveUserOperationLog(Integer type, String operationModule, String operationView, Object operationObjId, String operationObjName) {
         try{
             //获取业务字典
             List<DictBiz> dictBizList = this.dictBizClient.getList("operation_type", "notRoot").getData();
@@ -41,7 +41,7 @@ public class OperationLogClientImpl implements OperationLogClient {
             //操作模块
             newData.setOperationModule(operationModule);
             //操作内容
-            newData.setOperationContent(operationAccount + ";" + operationObjId);
+            newData.setOperationContent(operationAccount + ":" + operationObjName);
             //PC 还是 APP
             newData.setOperationMedium("PC");
             //业务数据

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

@@ -31,7 +31,14 @@
     </resultMap>
 
     <select id="queryTaskListByFormDataId" resultMap="taskResultMap">
-        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 limit 1
+        select
+          id,
+          form_data_id,
+          process_instance_id,
+          approval_type,
+          status,
+          batch
+        from u_task where form_data_id like #{formDataId} and status in(1,2) and is_deleted = 0 order by create_time DESC limit 1
     </select>
 
     <select id="queryBatchList" resultMap="taskResultMap">

+ 53 - 9
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -6,6 +6,11 @@ import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.apache.http.client.utils.DateUtils;
 import org.springblade.business.entity.InformationQuery;
+import org.springblade.business.entity.Task;
+import org.springblade.business.entity.TaskParallel;
+import org.springblade.business.feign.TaskClient;
+import org.springblade.business.service.ITaskParallelService;
+import org.springblade.business.service.ITaskService;
 import org.springblade.business.vo.FileUserVO;
 import org.springblade.business.vo.InformationQueryVO;
 import org.springblade.business.mapper.InformationQueryMapper;
@@ -14,9 +19,12 @@ import org.springblade.business.vo.QueryProcessDataVO;
 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.jackson.JsonUtil;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.feign.WbsTreeContractClient;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
@@ -34,6 +42,12 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 
 	private final WbsTreeContractClient wbsTreeContractClient;
 
+	private final IUserClient userClient;
+
+	private final TaskClient taskClient;
+
+	private final ITaskParallelService taskParallelService;
+
 	@Override
 	public List<QueryProcessDataVO> queryProcessDataByPrimaryKeyIdAndClassify(String primaryKeyId, Integer classify) {
 		return this.baseMapper.queryProcessDataByPrimaryKeyIdAndClassify(primaryKeyId, classify);
@@ -69,7 +83,7 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 			}
 
 			//拼接填报人信息
-			String fileUser = user.getUserId() + "-" + user.getUserName();
+			String fileUser = user.getUserId() + "-" + user.getNickName();
 			if(StringUtils.isNotEmpty(oldData.getFileUserIdAndName())){
 				if(!oldData.getFileUserIdAndName().contains(fileUser)){
 					//不包含,拼接
@@ -133,12 +147,25 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 			List<String> userList = new ArrayList<>();
 			fileUserResult.removeIf(Objects::isNull);
 			if(fileUserResult.size() > 0){
-				fileUserResult.forEach(user -> userList.add(user.getFileUserIdAndName()));
-				//去重
+				fileUserResult.forEach(user -> {
+					//一次去重
+					String[] array = user.getFileUserIdAndName().split(",");
+					for(String str : array){
+						if(!userList.contains(str)){
+							userList.add(str);
+						}
+					}
+				});
+				//二次去重
 				HashSet<String> hashSet = new HashSet<>(userList);
 				hashSet.forEach(user -> {
 					String[] array = user.split("-");
-					result.add(new FileUserVO(array[0], array[1]));
+					User bUser = this.userClient.userInfoById(Long.parseLong(array[0])).getData();
+					if(bUser != null){
+						result.add(new FileUserVO(array[0], bUser.getRealName()));
+					} else {
+						result.add(new FileUserVO(array[0], array[1]));
+					}
 				});
 			}
 		}
@@ -151,10 +178,6 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 		long current = (page.getCurrent() - 1L) * page.getSize();
 		//获取总量
 		Integer count = this.baseMapper.countInformationQuery(vo);
-		//多节点查询
-//		if(vo.getWbsId() != null){
-//			vo.setWbsIds(JSONArray.parseArray(JSONObject.toJSONString(Arrays.asList(String.valueOf(vo.getWbsId()).split(","))), String.class));
-//		}
 
 		if(StringUtils.isNotEmpty(vo.getBetweenTime())){
 			String[] betweenTime;
@@ -177,8 +200,22 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 			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()) ? "已审批" : "已废除");
-			});
 
+				if(Arrays.asList("1,2".split(",")).contains(vor.getStatus().toString())){
+					//说明属于待审批和已审批状态,查询待办信息
+					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());
+						if(linkTasks != null && linkTasks.size() > 0){
+							//处理审批状态
+							this.integrationMethod(vor, linkTasks);
+						}
+						//设置上报批次
+						vor.setReportNumber(String.valueOf(tasks.get(0).getBatch()));
+					}
+				}
+			});
 			page.setRecords(voResult);
 			page.setTotal(count);
 
@@ -188,4 +225,11 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 		return page.setRecords(null);
 	}
 
+	/**
+	 * 统合方法
+	 */
+	private void integrationMethod(InformationQueryVO vo, List<TaskParallel> linkList) {
+		linkList.forEach(link -> vo.setWaitingUserList(link.getTaskUserName(), new Integer("999").equals(link.getEVisaStatus()) ? 999 : new Integer("2").equals(link.getStatus()) ? 2 : new Integer("3").equals(link.getStatus()) && new Integer("1").equals(link.getInitiative()) ? 3 : 1));
+	}
+
 }

+ 6 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java

@@ -75,7 +75,7 @@ public class ContractInfoController extends BladeController {
     /**
      * 根据项目id查询当前所有合同
      */
-    @GetMapping("/findContractInfoByPid")
+    @GetMapping("/getContractInfoByPid")
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "根据项目id查询当前所有合同", notes = "传入pid")
     public R<List<ContractInfo>> findContractInfoByPid(String pid) {
@@ -176,7 +176,7 @@ public class ContractInfoController extends BladeController {
     /**
      * 查询角色的岗位
      */
-    @GetMapping("/findJobByRoleId")
+    @GetMapping("/getJobByRoleId")
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "查询角色下的岗位", notes = "传入id")
     public R<List<CRolePostVO>> findJobByRoleId(@ApiParam(value = "id", required = true)
@@ -192,7 +192,7 @@ public class ContractInfoController extends BladeController {
     /**
      * 根据用户列表
      */
-    @GetMapping("/findUserList")
+    @GetMapping("/getUserList")
     @ApiOperationSupport(order = 11)
     @ApiOperation(value = "", notes = "")
     public R<List<User>> findUserList() {
@@ -207,7 +207,7 @@ public class ContractInfoController extends BladeController {
     /**
      * 根据项目id、合同id、角色id查询当前运维的用户
      */
-    @GetMapping("/findUserListByCondition")
+    @GetMapping("/getUserListByCondition")
     @ApiOperationSupport(order = 10)
     @ApiOperation(value = "查询当前项目角色下的运维用户列表", notes = "传入项目id、角色id、合同id(非必传)、size每页数量、current当前页")
     public R<IPage<User>> findUserListByCondition(FindAllUserByConditionDTO values, Query query) {
@@ -288,7 +288,7 @@ public class ContractInfoController extends BladeController {
     /**
      * 根据项目id、合同id、岗位id查询当前分配的用户-查询当前项目合同岗位下的用户
      */
-    @GetMapping("/findAllUserByCondition")
+    @GetMapping("/getAllUserByCondition")
     @ApiOperationSupport(order = 9)
     @ApiOperation(value = "查询当前项目合同岗位下的用户", notes = "传入项目id、合同id、岗位id、size每页数量、current当前页")
     public R<IPage<UserVO2>> findAllUserByCondition(FindAllUserByConditionDTO values, Query query) {
@@ -477,7 +477,7 @@ public class ContractInfoController extends BladeController {
     /**
      * 查询监理or业主合同段关联信息
      */
-    @GetMapping("/searchContractRelationInfo")
+    @GetMapping("/getContractRelationInfo")
     @ApiOperationSupport(order = 21)
     @ApiOperation(value = "查询监理or业主合同段关联信息", notes = "合同段id")
     @ApiImplicitParam(name = "contractId", value = "合同段id")

+ 72 - 26
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -26,6 +26,7 @@ import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
 import org.springblade.business.feign.FileUtilsClient;
 import org.springblade.business.feign.InformationQueryClient;
+import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.MathUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
@@ -48,6 +49,7 @@ import org.springblade.resource.feign.CommonFileClient;
 import org.springblade.resource.feign.IOSSClient;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.resource.vo.NewBladeFile;
+import org.springblade.system.cache.ParamCache;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springblade.core.mp.support.Query;
@@ -66,6 +68,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
+
 /**
  * 清表基础数据表 控制器
  *
@@ -116,6 +119,8 @@ public class ExcelTabController extends BladeController {
 
     private final FileUtilsClient fileUtilsClient;
 
+    private final IWbsParamService wbsParamService;
+
     /**
      * 详情
      */
@@ -259,12 +264,14 @@ public class ExcelTabController extends BladeController {
     })
     public R putFileAttach(@RequestParam("file") MultipartFile file, Long nodeId) {
 
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+
         ExcelTab detail = excelTabService.getById(nodeId);
         // 上传excel文件
         R<BladeFile> bladeFile = iossClient.addFileInfo(file);
         BladeFile bladeFile1 = bladeFile.getData();
         String filecode = SnowFlakeUtil.getId()+"";
-        String thmlUrl = "/Users/hongchuangyanfa/Desktop/"+filecode+".html";
+        String thmlUrl = file_path+filecode+".html";
         // 解析excel
         Workbook wb = new Workbook();
         wb.loadFromMHtml(file.getInputStream());
@@ -272,7 +279,6 @@ public class ExcelTabController extends BladeController {
         Worksheet sheet = wb.getWorksheets().get(0);
         sheet.saveToHtml(thmlUrl);
 
-
         detail.setExtension(bladeFile1.getOriginalName());
         detail.setFileUrl(bladeFile1.getLink());
         detail.setFileType(3); // 表示为清表信息  1 表示祖节点  2 表示为节点信息 3 表示清表
@@ -411,6 +417,7 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "tabId", value = "表Id", required = true)
     })
     public R<List<ExceTabTreVO>> saveLinkeTab(Long exceTabId, Long tabId, BladeUser bladeUser) throws IOException {
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         // 查询私有项目信息
         WbsTreePrivate wbsTree = new WbsTreePrivate();
         wbsTree.setPKeyId(tabId);
@@ -427,7 +434,7 @@ public class ExcelTabController extends BladeController {
         // 复制模版htmlURL
         File file_in= ResourceUtil.getFile(excelTab.getHtmlUrl());
         String filecode = SnowFlakeUtil.getId()+"";
-        String thmlUrl = "/Users/hongchuangyanfa/Desktop/privateUrl/"+filecode+".html";
+        String thmlUrl = file_path+"/privateUrl/"+filecode+".html";
         File file_out = ResourceUtil.getFile(thmlUrl);
         FileUtil.copy(file_in,file_out);
         updateWrapper.set("html_url",thmlUrl);
@@ -489,16 +496,13 @@ public class ExcelTabController extends BladeController {
 
         File writefile = new File(thmlUrl);
         FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
-        wbsTreePrivateService.update(updateWrapper);
+
 
         //日志表单关联解决
         if(aPrivate.getWbsType().equals("4")){
-            WbsTreePrivate wbsTreeCon = wbsTreePrivateService.getBaseMapper().selectOne(Wrappers.<WbsTreePrivate>query().lambda()
-                    .eq(WbsTreePrivate::getId, aPrivate.getParentId()).eq(WbsTreePrivate::getWbsType,"4").eq(WbsTreePrivate::getProjectId,aPrivate.getProjectId()));
-            wbsTreeCon.setExcelId(aPrivate.getPKeyId());
-            wbsTreePrivateService.saveOrUpdate(wbsTreeCon);
+            updateWrapper.set("excel_id",aPrivate.getPKeyId());
         }
-
+        wbsTreePrivateService.update(updateWrapper);
         //关联项目下所有的合同段
         aPrivate.setHtmlUrl(thmlUrl);
         wbsTreeContractService.updateAllNodeTabById(aPrivate);
@@ -711,12 +715,14 @@ public class ExcelTabController extends BladeController {
         String tabName = wbsTreeContract.getInitTableName();
 
         // 判读修改还是 添加
-        String querySql = "select * from "+tabName+" where p_key_id="+pkeyId ;
-        List<Map<String, Object>> dataIn = jdbcTemplate.queryForList(querySql);
+       // String querySql = "select * from "+tabName+" where p_key_id="+pkeyId ;
+     //   List<Map<String, Object>> dataIn = jdbcTemplate.queryForList(querySql);
+
+           String delSql = "delete from "+tabName+" where p_key_id="+pkeyId ;;
 
         String sqlInfo="";
 
-        if(dataIn.isEmpty()){ //插入
+       // if(dataIn.isEmpty()){ //插入
             sqlInfo = "INSERT INTO "+tabName+" ( ";
             String keyStr = "id,";
             String valStr = SnowFlakeUtil.getId() + ",";
@@ -732,16 +738,19 @@ public class ExcelTabController extends BladeController {
             WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                     .eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId,contractId));
 
+            //处理文件提名
+            String fileName = this.wbsParamService.crateFileTitle(wbsTreeContractByP.getPKeyId(), Long.parseLong(wbsTreeContractByP.getContractId()));
+
             //huangjn 保存成功后调用生成资料查询列表数据
-            this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId()+"", "文件名称(后面再完善)", Integer.parseInt(classify), 2);
-        }else{ //更新
+            this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId()+"", fileName, Integer.parseInt(classify), 2);
+/*        }else{ //更新
             sqlInfo = "update  "+tabName+" set ";
             for (String keys : dataMap2.keySet()){
                 sqlInfo += keys+"='"+dataMap2.get(keys)+"',";
             }
             sqlInfo=sqlInfo.substring(0,sqlInfo.lastIndexOf(","));
             sqlInfo = sqlInfo + " where p_key_id="+pkeyId;
-        }
+        }*/
 
         UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
         updateWrapper.in("p_key_id",pkeyId);
@@ -1175,6 +1184,7 @@ public class ExcelTabController extends BladeController {
         if(wbsTreeContract.getHtmlUrl()==null){
             return R.data(reData);
         }
+
         //表单是否存储在
         String tabName = wbsTreeContract.getInitTableName();
         String isExitSql = " select * from information_schema.TABLES where TABLE_NAME='"+tabName+"'";
@@ -1199,7 +1209,7 @@ public class ExcelTabController extends BladeController {
                 if (tabVal.indexOf("T") >= 0 && tabVal.indexOf(".000Z]") >= 0) {
                     String tabData[] = tabVal.split("__");
                     if (reData.containsKey("pickerKey")) {
-                        String pickerKey = reData.get("pickerKey") + "," + tabData[1];
+                        String pickerKey = reData.get("pickerKey") + "," +key+"__"+ tabData[1];
                         reData.put("pickerKey", pickerKey);
                     } else {
                         reData.put("pickerKey", key + "__" + tabData[1]);
@@ -1243,6 +1253,8 @@ public class ExcelTabController extends BladeController {
     })
     public R getBussPdfInfo(Long pkeyId) throws Exception {
 
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
 
@@ -1253,7 +1265,7 @@ public class ExcelTabController extends BladeController {
             return R.fail("请关联清表!");
         }
 
-        String pdfPath="/Users/hongchuangyanfa/Desktop/pdf//"+pkeyId+".pdf";
+        String pdfPath=file_path+"/pdf//"+pkeyId+".pdf";
         File tabpdf = ResourceUtil.getFile(pdfPath);
         if(tabpdf.exists()){
             tabpdf.delete();
@@ -1271,11 +1283,13 @@ public class ExcelTabController extends BladeController {
         Worksheet sheet = wb.getWorksheets().get(0);
 
         if (DataInfo != null && DataInfo.size() >= 1) {
+
             File htmlFile = ResourceUtil.getFile(wbsTreeContract.getHtmlUrl());
             String htmlString =  IoUtil.readToString(new FileInputStream(htmlFile));
             Document doc = Jsoup.parse(htmlString);
             Element table = doc.select("table").first();
             Elements trs = table.select("tr");
+
             for(String val : DataInfo.keySet()){
                 if(val.indexOf("__")>=0){
                     String DataVal[] = val.split("__");
@@ -1310,11 +1324,18 @@ public class ExcelTabController extends BladeController {
                         }
                         https://bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
                         if(myData.indexOf("https")>=0 && myData.indexOf("aliyuncs")>=0){
-                            System.out.println(myData);
+                            Element element = trs.get(y1).select("td").get(x1);
+                            String styles[] = element.attr("style").split(";");
+                            int Height = 0;
+                            for(String sty:styles){
+                                if(sty.indexOf("height:")>=0){
+                                    Height = Integer.parseInt(sty.replace("height:","").replace("px",""));
+                                }
+                            }
 
                             BufferedImage image = ImageIO.read(CommonUtil.getOSSInputStream(myData) );
                             ExcelPicture pic = sheet.getPictures().add(y1, x1,image);
-
+                            pic.setHeight(Height);
                             sheet.getCellRange(y1,x1).getStyle().setShrinkToFit(true);
 
                         }else{
@@ -1353,8 +1374,12 @@ public class ExcelTabController extends BladeController {
 
         List<String> dataListPdf = tableFileList.stream().filter(tableFile -> tableFile.getDomainPdfUrl()!=null).map(TableFile::getDomainPdfUrl).collect(Collectors.toList());
 
-        String pdfPath2 = "/Users/hongchuangyanfa/Desktop/pdf//"+pkeyId+"_2.pdf";
+        String pdfPath2 = file_path+"/pdf//"+pkeyId+"_2.pdf";
 
+        File tabpdf2 = ResourceUtil.getFile(pdfPath2);
+        if(tabpdf2.exists()){
+            tabpdf2.delete();
+        }
         FileUtils.mergePdfPublicMethods(dataListPdf,pdfPath2);
 
         BladeFile bladeFile2 = newIOSSClient.uploadFile(pkeyId + "2.pdf", pdfPath2);
@@ -1377,7 +1402,11 @@ public class ExcelTabController extends BladeController {
     public R copeBussTab(Long pkeyId) throws FileNotFoundException {
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
-        List<WbsTreeContract> wbsTreeContractList = wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getId,wbsTreeContract.getId()).eq(WbsTreeContract::getContractId,wbsTreeContract.getContractId()));
+
+        List<WbsTreeContract> wbsTreeContractList = wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>query().lambda()
+                .eq(WbsTreeContract::getId,wbsTreeContract.getId())
+                .eq(WbsTreeContract::getContractId,wbsTreeContract.getContractId())
+                .eq(WbsTreeContract::getParentId,wbsTreeContract.getParentId()));
 
         long newPkId = SnowFlakeUtil.getId();
         Long  id = wbsTreeContract.getId();
@@ -1447,6 +1476,8 @@ public class ExcelTabController extends BladeController {
     })
     public R addBussFile(@RequestParam("file") MultipartFile file, Long pkeyId) {
 
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+
         R<BladeFile> bladeFile = iossClient.addFileInfo(file);
         BladeFile bladeFile1 = bladeFile.getData();
         TableFile tableFile = new TableFile();
@@ -1490,7 +1521,11 @@ public class ExcelTabController extends BladeController {
         //
         List<String> dataListPdf = tableFileList.stream().filter(tableFile1 -> tableFile1.getDomainPdfUrl()!=null).map(TableFile::getDomainPdfUrl).collect(Collectors.toList());
 
-        String pdfPath2 = "/Users/hongchuangyanfa/Desktop/pdf//"+pkeyId+"_2.pdf";
+        String pdfPath2 = file_path+"/pdf//"+pkeyId+"_2.pdf";
+        File tabpdf2 = ResourceUtil.getFile(pdfPath2);
+        if(tabpdf2.exists()){
+            tabpdf2.delete();
+        }
 
         FileUtils.mergePdfPublicMethods(dataListPdf,pdfPath2);
 
@@ -1532,14 +1567,25 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "projectId", value = "项目ID", required = true),
             @ApiImplicitParam(name = "contractId", value = "合同段Id", required = true)
     })
-    public R getBussPdfs(String nodeId,String classify,String contractId,String projectId){
-
+    public R getBussPdfs(String nodeId,String classify,String contractId,String projectId) throws Exception {
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         // 获取有权限的节点信息
         List<WbsTreeContract> wbsTreeContractList = wbsTreeContractService.searchNodeAllTable(nodeId, classify, contractId, projectId);
-        List<String> data = wbsTreeContractList.stream().filter(wbsTreeContract ->  wbsTreeContract.getPdfUrl()!=null && !wbsTreeContract.getIsBussShow().equals("2")).map(WbsTreeContract::getPdfUrl).collect(Collectors.toList());
+        List<String> data = wbsTreeContractList.stream().filter(wbsTreeContract ->  wbsTreeContract.getPdfUrl()!=null && wbsTreeContract.getIsBussShow()!=2).map(WbsTreeContract::getPdfUrl).collect(Collectors.toList());
 
-        String listPdf = "/Users/hongchuangyanfa/Desktop/pdf/"+nodeId+".pdf";
+        String listPdf = file_path+"pdf/"+nodeId+".pdf";
+        File tabpdf2 = ResourceUtil.getFile(listPdf);
+        if(tabpdf2.exists()){
+            tabpdf2.delete();
+        }
+        // 添加从来没有预览过的pdf
+        for (WbsTreeContract wbsTreeContract:wbsTreeContractList){
+            if((wbsTreeContract.getPdfUrl()==null ||wbsTreeContract.getPdfUrl().equals("")) && wbsTreeContract.getIsBussShow()!=2){
+                 R bussPdfInfo = this.getBussPdfInfo(wbsTreeContract.getPKeyId());
 
+                data.add(bussPdfInfo.getData()+"");
+            }
+        }
         FileUtils.mergePdfPublicMethods(data,listPdf);
 
         BladeFile bladeFile = this.newIOSSClient.uploadFile(nodeId+".pdf", listPdf);

+ 5 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FirstController.java

@@ -77,12 +77,12 @@ public class FirstController extends BladeController {
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "首件表单获取html页面", notes = "首件表单获取html页面")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "projectId", value = "projectId", required = true)
+            @ApiImplicitParam(name = "contractId", value = "contractId", required = true)
     })
-    public R getFirstExcelHtml(Long projectId) throws IOException, InterruptedException {
+    public R getFirstExcelHtml(Long contractId) throws IOException, InterruptedException {
 
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                .eq(WbsTreeContract::getProjectId,projectId).eq(WbsTreeContract::getTableType,"111"));
+                .eq(WbsTreeContract::getContractId,contractId).eq(WbsTreeContract::getTableType,"111"));
         if(wbsTreeContract ==null ){
             return R.fail("该数据下无此节点!");
         }
@@ -100,8 +100,8 @@ public class FirstController extends BladeController {
         fileInputStream.close();
         JSONObject reData = new JSONObject();
         reData.put("id",wbsTreeContract.getPKeyId());
-        reData.put("data",table);
-        return R.data(table+"");
+        reData.put("data",table+"");
+        return R.data(reData);
     }
 
     /**

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

@@ -110,7 +110,7 @@ public class ImageClassificationConfigController extends BladeController {
     /**
      * 根据所属类型查询
      */
-    @GetMapping("/findByType")
+    @GetMapping("/getByType")
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "根据所属类型查询", notes = "传入type")
     public R<List<ImageClassificationConfig>> findByType(@RequestParam("type") String type) {

+ 8 - 28
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/LinkdataInfoController.java

@@ -16,54 +16,34 @@
  */
 package org.springblade.manager.controller;
 
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.itextpdf.html2pdf.ConverterProperties;
-import com.itextpdf.html2pdf.HtmlConverter;
-import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider;
-import com.itextpdf.io.font.FontProgram;
-import com.itextpdf.io.font.FontProgramFactory;
-import com.itextpdf.kernel.geom.PageSize;
-import com.itextpdf.kernel.pdf.PdfDocument;
-import com.itextpdf.kernel.pdf.PdfWriter;
-import com.itextpdf.layout.font.FontProvider;
-import com.spire.pdf.PdfPageSettings;
-import com.spire.pdf.graphics.PdfMargins;
-import com.spire.xls.Workbook;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-import com.spire.pdf.htmlconverter.qt.Size;
-
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.FileUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.IoUtil;
 import org.springblade.core.tool.utils.ResourceUtil;
+import org.springblade.manager.entity.LinkdataInfo;
 import org.springblade.manager.entity.WbsFormElement;
-import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
+import org.springblade.manager.service.ILinkdataInfoService;
 import org.springblade.manager.service.IWbsFormElementService;
-import org.springblade.manager.service.IWbsTreeContractService;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.bind.annotation.RequestParam;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.manager.entity.LinkdataInfo;
-import org.springblade.manager.vo.LinkdataInfoVO;
-import org.springblade.manager.service.ILinkdataInfoService;
-import org.springblade.core.boot.ctrl.BladeController;
 
-import java.io.*;
-import java.util.Map;
+import javax.validation.Valid;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
 
 /**
  * 清表解析字段信息 控制器

+ 3 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java

@@ -162,7 +162,7 @@ public class ProjectInfoController extends BladeController {
     /**
      * 查询业务条数
      */
-    @GetMapping("/listContractInfoCount")
+    @GetMapping("/getListContractInfoCount")
     @ApiOperationSupport(order = 9)
     @ApiOperation(value = "统计合同数", notes = "null")
     public List<ContractlnfoCountVO> selectContractInfoCount() {
@@ -172,7 +172,7 @@ public class ProjectInfoController extends BladeController {
     /**
      * 项目私有库分配wbs树下拉框列表type=1质检 =2实验
      */
-    @GetMapping("/findWbsTreeList")
+    @GetMapping("/getWbsTreeList")
     @ApiOperationSupport(order = 10)
     @ApiOperation(value = "项目合同段私有库分配wbs树下拉框列表", notes = "null")
     public R<WbsTreeAllListVO> findWbsTreeList(Integer type) {
@@ -231,7 +231,7 @@ public class ProjectInfoController extends BladeController {
     /**
      * 根据用户id查询项目合同岗位列表信息(用于展示在用户编辑、详情中)
      */
-    @GetMapping("/findProjectAndContractList")
+    @GetMapping("/getProjectAndContractList")
     @ApiOperationSupport(order = 13)
     @ApiOperation(value = "根据用户id查询项目合同岗位列表信息", notes = "传入用户id")
     public R<List<Map>> findProjectAndContractList(Long userId) {

+ 31 - 15
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TextdictInfoController.java

@@ -18,6 +18,7 @@ package org.springblade.manager.controller;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -35,6 +36,7 @@ import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.*;
 import org.springblade.manager.entity.WbsFormElement;
+import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.vo.TextdictDataInfoVO;
@@ -150,7 +152,7 @@ public class TextdictInfoController extends BladeController {
 	@PostMapping("/saveTextInfo")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入textdictInfo")
-	public R saveTextInfo(@Valid @RequestBody TextdictDataInfoVO textdictInfo) throws FileNotFoundException {
+	public R saveTextInfo(@Valid @RequestBody TextdictDataInfoVO textdictInfo) throws FileNotFoundException, InterruptedException {
 
 		// 获取 节点信息
 		WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.getByPKeyId(textdictInfo.getTableId());
@@ -189,7 +191,7 @@ public class TextdictInfoController extends BladeController {
 			element.empty().append("<el-input :rows="+rowspan*2+"  type='textarea' placeholder="+placeholder+" v-model="+vmode+"    keyname="+keyname+" weighing="+weighing+"  @contextmenu.prevent.native='RightClick("+parm+")' trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+" style='width:100%;height:100%'  > </el-input>");
 			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
 		}else if(textdictInfo.getTextId().equals("select")){ // 下拉框
-			String selectText = " <el-select v-model="+vmode+" placeholder='请选择' trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">"; //v-model="+keyname+"
+			String selectText = " <el-select v-model="+vmode+" keyname="+keyname+" weighing="+weighing+" placeholder="+placeholder+" trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">"; //v-model="+keyname+"
 			List<TextdictInfo_vo> optionList = textdictInfo.getTextInfo();
 			if(optionList!=null && optionList.size()>=1){
 				for (int i= 0 ; i<optionList.size();i++)
@@ -197,37 +199,48 @@ public class TextdictInfoController extends BladeController {
 			}
 			selectText += "</el-select>";
 			element.empty().append(selectText);
+			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
 		}else if(textdictInfo.getTextId().equals("radio")){ // 单选按钮
 
-			String radioText = "<template>";
+			String radioText = "<template v-model="+vmode+" keyname="+keyname+" weighing="+weighing+" placeholder="+placeholder+" trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">";
 			List<TextdictInfo_vo> optionList = textdictInfo.getTextInfo();
 			if(optionList!=null && optionList.size()>=1){
 				for (int i= 0 ; i<optionList.size();i++)
-					radioText +=" <el-radio  label="+i+">"+optionList.get(i).getDictValue()+"</el-radio>";
+					radioText +=" <el-radio v-model="+vmode+"  label="+i+">"+optionList.get(i).getDictValue()+"</el-radio>";
 			}
 			radioText += "</template>";
 			element.empty().append(radioText);
+			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
 		}else if(textdictInfo.getTextId().equals("checkbox")){ // 多选框
-			String checkbox = "";
+
+			String checkbox = "<template v-model="+vmode+" keyname="+keyname+" weighing="+weighing+" placeholder="+placeholder+" trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">";
 			List<TextdictInfo_vo> optionList = textdictInfo.getTextInfo();
 			if(optionList!=null && optionList.size()>=1){
 				for (int i= 0 ; i<optionList.size();i++)
 					checkbox +="<el-checkbox>"+optionList.get(i).getDictValue()+"</el-checkbox>";
 			}
+			checkbox += "</template>";
 			element.empty().append(checkbox);
+			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
 		}else if(textdictInfo.getTextId().equals("date")){ // 日期
 			element.empty().append("<el-date-picker v-model="+vmode+" type='date' format='YYYY年MM月DD日' placeholder="+placeholder+" keyname="+keyname+" weighing="+weighing+"  @contextmenu.prevent.native='RightClick("+parm+")' trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+" style='width:100%;height:100%'   placeholder='"+placeholder+"'> </el-date-picker>");
 			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
 		}else if(textdictInfo.getTextId().equals("daterange")){ // 时间段
-			element.empty().append("<el-date-picker  v-model="+vmode+" type='datetimerange'  start-placeholder='开始日期'  end-placeholder='结束日期' format='YYYY年MM月DD日' trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">");
-			element.children().get(0).attr("keyname",keyname);
+
+			element.empty().append("<el-date-picker  v-model="+vmode+" type='datetimerange' placeholder="+placeholder+"  start-placeholder='开始日期'  end-placeholder='结束日期' format='YYYY年MM月DD日' trIndex="+trindex+" keyname="+keyname+" weighing="+weighing+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">");
+			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
+			element.children().get(0).attr("@change","datePickerChange($event,'"+keyname+"')");
+			element.children().get(0).attr("@calendar-change","datePickerCalendarChange($event,'"+keyname+"')");
+
 		}else if(textdictInfo.getTextId().equals("img")){
-			element.empty().append("<el-upload class='hc-upload-table-form' action='/api/blade-resource/oss/endpoint/put-file' trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+"  @exceed='formUploadExceed' accept='image/png,image/jpg,image/jpeg' :headers='getTokenHeader' :show-file-list='false' > <img v-if='"+vmode+"' :src="+vmode+" class='hc-table-form-img' /> <div class='hc-table-form-icon' v-else> 点此选择文件并上传 </div> </el-upload>");
+			element.empty().append("<el-upload placeholder="+placeholder+" v-model="+vmode+" keyname="+keyname+" weighing="+weighing+"  class='hc-upload-table-form' action='/api/blade-resource/oss/endpoint/put-file' trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+"  @exceed='formUploadExceed' accept='image/png,image/jpg,image/jpeg' :headers='getTokenHeader' :show-file-list='false' > <img v-if='"+vmode+"' :src="+vmode+" class='hc-table-form-img' /> <div class='hc-table-form-icon' v-else> 点此选择文件并上传 </div> </el-upload>");
 			element.children().get(0).attr("@success","formUploadSuccess($event,'"+keyname+"')");
+			element.attr("@focus","getInformation("+oncklickText+")");
+			element.attr("tabindex","-1");
 		}
 			File writefile = new File(wbsTreePrivate.getHtmlUrl());
 		FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
-
+		Thread.sleep(300);
 		return R.success("操作成功");
 	}
 
@@ -242,6 +255,10 @@ public class TextdictInfoController extends BladeController {
 		JSONArray jsonArray = dataInfo.getJSONArray("dataInfo");
 		Long tableId = jsonArray.getJSONObject(0).getLong("tabId");
 
+		// 删除
+		textdictInfoService.getBaseMapper().delete(Wrappers.<TextdictInfo>query().lambda()
+				.eq(TextdictInfo::getTabId, tableId));
+
 		WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.getByPKeyId(tableId);
 		// 读取html页面信息
 		File file1 = ResourceUtil.getFile(wbsTreePrivate.getHtmlUrl());
@@ -257,20 +274,19 @@ public class TextdictInfoController extends BladeController {
 		for (int i =0 ; i<jsonArray.size();i++){
 			JSONObject jsonObject = jsonArray.getJSONObject(i);
 			TextdictInfo textdictInfo = new TextdictInfo();
-			String[] trtd = jsonObject.getString("trTd").split("_");
+			String[] trtd = jsonObject.getString("colKey").split("__")[1].split("_");
 			Element element = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
 
-			String x1 = element.children().get(0).attr("x1");
-			String x2 = element.children().get(0).attr("x2");
-			String y1 = element.children().get(0).attr("y1");
-			String y2 = element.children().get(0).attr("y2");
 			String id = element.children().get(0).attr("keyname");
 			textdictInfo.setName("电签位置配置");
 			textdictInfo.setType(2);
 			textdictInfo.setColKey(id);
 			textdictInfo.setSigRoleId(jsonObject.getString("sigRoleId"));
-			textdictInfo.setTrTd(jsonObject.getString("trTd"));
 			textdictInfo.setTabId(jsonObject.getString("tabId"));
+			textdictInfo.setColName(jsonObject.getString("colName"));
+			textdictInfo.setSigRoleName(jsonObject.getString("sigRoleName"));
+			textdictInfo.setPyzbx(jsonObject.getDouble("pyzbx"));
+			textdictInfo.setPyzby(jsonObject.getDouble("pyzby"));
 			textdictInfo.setIsDeleted(0);
 			textdictInfos.add(textdictInfo);
 		}

+ 11 - 13
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsFormElementController.java

@@ -58,7 +58,7 @@ public class WbsFormElementController extends BladeController {
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "新增", notes = "传入wbsFormElement")
     public R save(@Valid @RequestBody WbsFormElementDTO wbsFormElement) {
-        return wbsFormElementService.saveAndSyn(wbsFormElement, wbsFormElement.getInitTableName());
+        return R.status(wbsFormElementService.saveAndSyn(wbsFormElement, wbsFormElement.getInitTableName()));
     }
 
 
@@ -90,8 +90,7 @@ public class WbsFormElementController extends BladeController {
     @ApiOperationSupport(order = 5)
     @ApiOperation(value = "批量新增wbs元素", notes = "传入wbsFormElementList")
     public R submitBatch(@RequestBody WbsFormElementVO2 wbsFormElementVO2) {
-        boolean b = wbsFormElementService.submitBatch(wbsFormElementVO2);
-        return R.status(b);
+        return R.status(wbsFormElementService.submitBatch(wbsFormElementVO2));
     }
 
 
@@ -103,8 +102,7 @@ public class WbsFormElementController extends BladeController {
     @ApiOperation(value = "逻辑删除", notes = "传入ids")
     public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam("ids") String ids,
                     @RequestParam("eKey") String eKey, @RequestParam("initTableName") String initTableName) {
-        boolean b = wbsFormElementService.deleteAndSyn(ids, eKey, initTableName);
-        if (b) {
+        if (wbsFormElementService.deleteAndSyn(ids, eKey, initTableName)) {
             return R.success("操作成功");
         }
         return R.fail("操作失败");
@@ -164,7 +162,7 @@ public class WbsFormElementController extends BladeController {
      */
     @ApiOperationSupport(order = 9)
     @ApiOperation(value = "查询当前节点下所有表单", notes = "传入该节点id")
-    @RequestMapping(value = "/findWbsTreeTableSameLevel", method = RequestMethod.GET)
+    @RequestMapping(value = "/getWbsTreeTableSameLevel", method = RequestMethod.GET)
     public R<List<WbsFormElementDTO2>> findWbsTreeTableSameLevel(@RequestParam("id") String id) {
         List<WbsFormElementDTO2> trees = wbsFormElementService.findWbsTreeTableSameLevel(id);
         return R.data(trees);
@@ -175,7 +173,7 @@ public class WbsFormElementController extends BladeController {
      */
     @ApiOperationSupport(order = 10)
     @ApiOperation(value = "wbs树节点手动排序", notes = "WbsFormElementDTO2集合,id=表单id")
-    @RequestMapping(value = "/wbsTreeTableSort", method = RequestMethod.POST)
+    @RequestMapping(value = "/submitWbsTreeTableSort", method = RequestMethod.POST)
     public R wbsTreeTableSort(@RequestBody List<WbsFormElementDTO2> wbsTreeDTO) {
         boolean b = wbsFormElementService.wbsTreeTableSort(wbsTreeDTO);
         return R.status(b);
@@ -197,9 +195,9 @@ public class WbsFormElementController extends BladeController {
      */
     @ApiOperationSupport(order = 12)
     @ApiOperation(value = "元素识别取消关联公有wbs表", notes = "传入表id、清表id")
-    @RequestMapping(value = "/cancelRelation", method = RequestMethod.GET)
-    public R cancelRelation(String id,String excelTabId) {
-        if (wbsFormElementService.cancelRelation(id,excelTabId)) {
+    @RequestMapping(value = "/cancel-relation", method = RequestMethod.GET)
+    public R cancelRelation(String id, String excelTabId) {
+        if (wbsFormElementService.cancelRelation(id, excelTabId)) {
             return R.success("取消成功");
         }
         return R.fail(200, "操作失败");
@@ -210,9 +208,9 @@ public class WbsFormElementController extends BladeController {
      */
     @ApiOperationSupport(order = 13)
     @ApiOperation(value = "元素识别关联公共WBS模板-查询节点下已关联的所有表单", notes = "传入节点id、清表id")
-    @RequestMapping(value = "/searchNodeTables", method = RequestMethod.GET)
+    @RequestMapping(value = "/getNodeTables", method = RequestMethod.GET)
     public R<List<WbsNodeTableVO>> searchNodeTables(String nodeId, String excelTabId) {
-        List<WbsNodeTableVO> list = wbsFormElementService.searchNodeTables(nodeId,excelTabId);
+        List<WbsNodeTableVO> list = wbsFormElementService.searchNodeTables(nodeId, excelTabId);
         if (list.size() > 0) {
             return R.data(list, "查询成功");
         }
@@ -224,7 +222,7 @@ public class WbsFormElementController extends BladeController {
      */
     @ApiOperationSupport(order = 14)
     @ApiOperation(value = "元素识别关联公共WBS模板-关联Wbs元素表", notes = "传入FormElementDTO2")
-    @RequestMapping(value = "/saveRelation", method = RequestMethod.POST)
+    @RequestMapping(value = "/save-relation", method = RequestMethod.POST)
     public R relationWbsTab(@RequestBody FormElementDTO2 formElementDTO) {
         boolean b = wbsFormElementService.saveRelation(formElementDTO);
         if (b) {

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

@@ -157,7 +157,7 @@ public class WbsInfoController extends BladeController {
     /**
      * 根据类型查找
      */
-    @GetMapping("/findByWbsType")
+    @GetMapping("/getByWbsType")
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "根据类型查找", notes = "传入type,1=质检 2=实验 3=计量")
     public R<List<WbsInfo>> findByWbsType(String type) {

+ 7 - 27
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -153,7 +153,7 @@ public class WbsTreeController extends BladeController {
     /**
      * 查询当前节点下所有表单(根据节点ID查询当前表单)
      */
-    @GetMapping("/selectByNodeTable")
+    @GetMapping("/getByNodeTable")
     @ApiOperationSupport(order = 6)
     @ApiOperation(value = "查询当前节点下所有表单", notes = "传入父节点id")
     public R<List<WbsNodeTableVO>> selectByNodeTable(@ApiParam(value = "父节点id", required = true) @RequestParam String id) {
@@ -194,7 +194,7 @@ public class WbsTreeController extends BladeController {
     /**
      * 根据表单id查询所有元素
      */
-    @GetMapping("/selectFormElements")
+    @GetMapping("/getFormElements")
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "根据表单id查询所有元素", notes = "传入表单id")
     @ApiImplicitParam(name = "id", value = "表单id", required = true)
@@ -217,7 +217,7 @@ public class WbsTreeController extends BladeController {
     @ApiOperationSupport(order = 9)
     @ApiOperation(value = "表单与元素新增", notes = "传入FormElementDTO")
     public R saveFormElement(@RequestBody FormElementDTO formElementDTO) {
-        return wbsTreeService.saveFormElement(formElementDTO);
+        return R.status(wbsTreeService.saveFormElement(formElementDTO));
     }
 
 
@@ -228,28 +228,8 @@ public class WbsTreeController extends BladeController {
     @ApiOperationSupport(order = 10)
     @ApiOperation(value = "编辑表单元素批量修改", notes = "传入WbsFormElement")
     @ApiImplicitParam(name = "ids", value = "元素的id集合", required = true)
-    @Transactional(rollbackFor = Exception.class)
     public R updateBatchElements(@RequestBody List<WbsFormElement> wbsFormElementList, @RequestParam("initTableName") String initTableName) {
-        for (WbsFormElement wbsFormElement : wbsFormElementList) {
-            wbsFormElement.setStatus(1);
-        }
-        boolean b = wbsFormElementService.updateBatchById(wbsFormElementList);
-        if (b) {
-            String s = wbsFormElementService.updateAndSyn(wbsFormElementList, initTableName);
-            switch (s) {
-                case "1":
-                    return R.fail("请输入正确字符串长度,范围为10-1000之间");
-                case "2":
-                    return R.fail("请输入正确整数长度,范围为10-255之间");
-                case "3":
-                    return R.fail("请输入正确小数长度,范围为10-65之间");
-                case "0":
-                    return R.success("修改成功");
-                default:
-                    return R.success("修改失败");
-            }
-        }
-        return R.fail("修改失败");
+        return R.status(wbsFormElementService.updateAndSyn(wbsFormElementList, initTableName));
     }
 
 
@@ -297,7 +277,7 @@ public class WbsTreeController extends BladeController {
      */
     @ApiOperationSupport(order = 13)
     @ApiOperation(value = "查询当前节点所有同级节点", notes = "传入该节点parentId")
-    @RequestMapping(value = "/findWbsTreeSameLevel", method = RequestMethod.GET)
+    @RequestMapping(value = "/getWbsTreeSameLevel", method = RequestMethod.GET)
     public R<List<WbsTreeDTO2>> findWbsTreeSameLevel(@RequestParam("parentId") String parentId) {
         List<WbsTreeDTO2> trees = wbsTreeService.findWbsTreeSameLevel(parentId);
         return R.data(trees);
@@ -308,7 +288,7 @@ public class WbsTreeController extends BladeController {
      */
     @ApiOperationSupport(order = 14)
     @ApiOperation(value = "wbs树节点手动排序", notes = "WbsTreeDTO2集合,id=节点id,sort=节点顺序")
-    @RequestMapping(value = "/wbsTreeSort", method = RequestMethod.POST)
+    @RequestMapping(value = "/submitWbsTreeSort", method = RequestMethod.POST)
     public R wbsTreeSort(@RequestBody List<WbsTreeDTO2> wbsTreeDTO) {
         boolean b = wbsTreeService.wbsTreeSort(wbsTreeDTO);
         return R.status(b);
@@ -357,7 +337,7 @@ public class WbsTreeController extends BladeController {
     @ApiOperation(value = "批量修改节点下元素表基本信息", notes = "传入List<WbsTree>")
     @RequestMapping(value = "/updateBatchNodeTableInfo", method = RequestMethod.POST)
     public R updateBatchNodeTableInfo(@RequestBody List<WbsTree> WbsTrees) {
-        WbsTrees.stream().forEach(wbsTree -> {
+        WbsTrees.forEach(wbsTree -> {
             wbsTree.setFullName(wbsTree.getDeptName());
         });
         return R.status(wbsTreeService.updateBatchById(WbsTrees));

+ 7 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -34,10 +34,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
 
 import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
 
@@ -94,6 +91,7 @@ public class WbsTreePrivateController extends BladeController {
                     wbsTreeList.addAll(wbsTreeTableList);
                 }
                 //复制数据
+                Date now = new Date();
                 for(WbsTree tree : wbsTreeList){
                     WbsTreePrivate treePrivate = new WbsTreePrivate();
                     BeanUtils.copyProperties(tree, treePrivate);
@@ -101,6 +99,7 @@ public class WbsTreePrivateController extends BladeController {
                     treePrivate.setWbsType("4");
                     treePrivate.setProjectId(vo.getProjectId());
                     treePrivate.setPKeyId(SnowFlakeUtil.getId());
+                    treePrivate.setCreateTime(now);
                 }
                 if(saveTreePrivateList.size() > 0){
                     //修改项目引用
@@ -172,7 +171,7 @@ public class WbsTreePrivateController extends BladeController {
     /**
      * 查询当前节点下所有表单(根据节点ID查询当前表单)
      */
-    @GetMapping("/findNodeTableByCondition")
+    @GetMapping("/getNodeTableByCondition")
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "查询当前节点下所有元素表", notes = "传入父节点id、wbsId、projectId")
     public R<List<WbsNodeTableVO>> findNodeTableByCondition(@RequestParam("parentId") String parentId,
@@ -253,7 +252,7 @@ public class WbsTreePrivateController extends BladeController {
      */
     @ApiOperationSupport(order = 7)
     @ApiOperation(value = "查询当前节点所有同级节点", notes = "传入项目id、当前节点parentId")
-    @RequestMapping(value = "/findWbsTreePrivateSameLevel", method = RequestMethod.GET)
+    @RequestMapping(value = "/getWbsTreePrivateSameLevel", method = RequestMethod.GET)
     public R<List<WbsTreePrivateDTO2>> findWbsTreePrivateSameLevel(@RequestParam("projectId") String projectId,
                                                                    @RequestParam("parentId") String parentId,
                                                                    @RequestParam("wbsId") String wbsId) {
@@ -265,7 +264,7 @@ public class WbsTreePrivateController extends BladeController {
      */
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "wbs私有树节点手动排序", notes = "WbsTreeDTO2集合,pKeyId=节点pKeyId")
-    @RequestMapping(value = "/wbsTreePrivateSort", method = RequestMethod.POST)
+    @RequestMapping(value = "/submitWbsTreePrivateSort", method = RequestMethod.POST)
     public R wbsTreePrivateSort(@RequestBody List<WbsTreePrivateDTO2> wbsTreeDTO) {
         return R.status(wbsTreePrivateService.wbsTreePrivateSort(wbsTreeDTO));
     }
@@ -276,7 +275,7 @@ public class WbsTreePrivateController extends BladeController {
      */
     @ApiOperationSupport(order = 9)
     @ApiOperation(value = "wbs私有树表单手动排序", notes = "WbsTreeDTO2集合,pKeyId=表单pKeyId")
-    @RequestMapping(value = "/wbsTreePrivateTableSort", method = RequestMethod.POST)
+    @RequestMapping(value = "/submitWbsTreePrivateTableSort", method = RequestMethod.POST)
     public R wbsTreePrivateTableSort(@RequestBody List<WbsTreePrivateDTO2> wbsTreeDTO) {
         return R.status(wbsTreePrivateService.wbsTreePrivateTableSort(wbsTreeDTO));
     }

+ 4 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml

@@ -227,8 +227,8 @@
         id AS "key",
         partition_code,
         old_id,
-        major_data_type
-<!--        contract_id AS contractIdRelation-->
+        major_data_type,
+        sort
         FROM
         m_wbs_tree_contract
         WHERE
@@ -268,7 +268,8 @@
         d.id AS "value",
         d.id AS "key",
         partition_code,
-        old_id
+        old_id,
+        sort
         FROM m_wbs_tree_contract d
         WHERE
         d.is_deleted = 0

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

@@ -42,7 +42,7 @@ public interface ExcelTabMapper extends BaseMapper<ExcelTab> {
 	 * @param excelTab
 	 * @return
 	 */
-	List<ExcelTabVO> selectExcelTabPage(IPage page, ExcelTabVO excelTab);
+	List<ExcelTabVO> selectExcelTabPage(IPage page, @Param("excelTab") ExcelTabVO excelTab);
 
 	/**
 	 * 懒加载获取树形节点

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml

@@ -50,6 +50,10 @@
         select x.id,x.create_time,x.name,
                (SELECT count(1) from m_excel_tab a where  FIND_IN_SET(x.id,a.alias) and a.is_deleted = 0 and a.file_type=3) as tab_cout
         from m_excel_tab x  where is_deleted = 0 and parent_id =#{param2.parentId}
+        <if test="excelTab.name!=null and excelTab.name!=''">
+            AND x.name  like concat(concat('%', #{excelTab.name}),'%')
+        </if>
+
     </select>
 
     <select id="tabLazyTree" resultMap="treeNodeResultMap" >

+ 4 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TextdictInfoMapper.xml

@@ -8,12 +8,14 @@
         <result column="is_deleted" property="isDeleted"/>
         <result column="name" property="name"/>
         <result column="type" property="type"/>
-        <result column="tr_td" property="trTd"/>
-        <result column="x_y" property="xy"/>
         <result column="tab_id" property="tabId"/>
         <result column="col_key" property="colKey"/>
         <result column="sig_role_id" property="sigRoleId"/>
         <result column="is_deleted" property="isDeleted"/>
+        <result column="col_name" property="colName"/>
+        <result column="sig_role_name" property="sigRoleName"/>
+        <result column="pyzbx" property="pyzbx"/>
+        <result column="pyzby" property="pyzby"/>
     </resultMap>
 
     <select id="selectTextdictInfoPage" resultMap="textdictInfoResultMap">

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

@@ -55,5 +55,8 @@ public interface WbsFormElementMapper extends BaseMapper<WbsFormElement> {
 
     Integer showShowTabLike(@Param("wbsTree") WbsTree wbsTree);
 
+    int assertFiledExist(String initTableName, String eKey);
+
+    String selectFiledType(String initTableName, String eKey);
 
 }

+ 9 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.xml

@@ -108,7 +108,7 @@
         where is_deleted = 0
     </select>
     <select id="judgeFiled" resultType="Integer">
-        select count(*)
+        select count(1)
         from information_schema.columns
         where table_name = &quot;${tableName}&quot;
           and column_name = &quot;${eKey}&quot;
@@ -153,4 +153,12 @@
         select count(*) from information_schema.TABLES where table_name = #{wbsTree.initTableName}
     </select>
 
+    <select id="assertFiledExist" resultType="java.lang.Integer">
+        SELECT count(1) FROM ${initTableName} WHERE ${eKey} is not null
+    </select>
+
+    <select id="selectFiledType" resultType="java.lang.String">
+        SELECT data_type FROM information_schema.columns WHERE table_name=#{initTableName} AND column_name = #{eKey}
+    </select>
+
 </mapper>

+ 9 - 30
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java

@@ -23,39 +23,21 @@ public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
 
     List<WbsTreeContractVO> selectAll();
 
-    void deleteBatch(@Param("ids") List<Long> ids,
-                     @Param("wbsId") String wbsId,
-                     @Param("projectId") String projectId,
-                     @Param("contractId") String contractId);
+    void deleteBatch(@Param("ids") List<Long> ids, @Param("wbsId") String wbsId, @Param("projectId") String projectId, @Param("contractId") String contractId);
 
-    WbsTreeContract selectByCondition(@Param("id") String id,
-                                      @Param("projectId") String projectId,
-                                      @Param("contractId") String contractId,
-                                      @Param("wbsId") String wbsId);
+    WbsTreeContract selectByCondition(@Param("id") String id, @Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsId") String wbsId);
 
-    List<WbsTreeContract> findAllNodeList2(@Param("projectId") String projectId,
-                                           @Param("contractId") String contractId,
-                                           @Param("wbsId") String wbsId);
+    List<WbsTreeContract> findAllNodeList2(@Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsId") String wbsId);
 
-    void updateByCondition(@Param("id") String id,
-                           @Param("projectId") String projectId,
-                           @Param("contractId") String contractId,
-                           @Param("wbsId") String wbsId);
-
-    WbsTreeContract selectByCondition2(@Param("id") String id,
-                                       @Param("projectId") String projectId,
-                                       @Param("contractId") String contractId,
-                                       @Param("wbsId") String wbsId);
+    void updateByCondition(@Param("id") String id, @Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsId") String wbsId);
 
+    WbsTreeContract selectByCondition2(@Param("id") String id, @Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsId") String wbsId);
 
     WbsTreePrivate selectParent(String projectId, String wbsId, Long parentId);
 
     void updateByCondition1(@Param("wbsTP") WbsTreePrivate wbsTP);
 
-    void insertByCondition(@Param("wbsTree") WbsTreePrivate wbsTreePrivate,
-                           @Param("contractId") Long contractId,
-                           @Param("pKeyId") Long pKeyId,
-                           @Param("wbsType") Integer wbsType);
+    void insertByCondition(@Param("wbsTree") WbsTreePrivate wbsTreePrivate, @Param("contractId") Long contractId, @Param("pKeyId") Long pKeyId, @Param("wbsType") Integer wbsType);
 
     List<WbsTreeContractVO2> selectListByCondition(String projectId);
 
@@ -73,10 +55,7 @@ public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
 
     List<WbsTableOwnerRole> selectWbsTableOwnerRoleList(String roleId);
 
-    List<WbsTreeContract> selectWbsTreeContractList(List<String> tableOwnerNumbers, String projectId,
-                                                    String wbsId, String contractId,
-                                                    Long parentId, String contractIdRelation,
-                                                    List<String> tableOwnerList);
+    List<WbsTreeContract> selectWbsTreeContractList(List<String> tableOwnerNumbers, String projectId, String wbsId, String contractId, Long parentId, String contractIdRelation, List<String> tableOwnerList);
 
     SaveUserInfoByProject selectRoleInfo(Long userId, String contractId, String projectId);
 
@@ -94,8 +73,8 @@ public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
 
     List<WbsTreeContract> selectContractList(String wbsId, String projectId,@Param("ids") List<Long> ids);
 
-    void updateBatchByIds(@Param("wbsTreeList") WbsTree wbsTreeList,@Param("id") Long id);
+    void updateBatchByIds(@Param("wbsTree") WbsTree wbsTree,@Param("id") Long id);
 
-    void updateBatchByIds2(@Param("wbsTreeList") WbsTreePrivate wbsTreeList,@Param("id")  Long id);
+    void updateBatchByIds2(@Param("wbsTreePrivate") WbsTreePrivate wbsTreePrivate,@Param("id")  Long id);
 
 }

+ 23 - 155
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -152,40 +152,7 @@
     </select>
 
     <select id="selectByCondition" resultType="org.springblade.manager.entity.WbsTreeContract">
-        SELECT id,
-               p_key_id,
-               wbs_id,
-               wbs_type,
-               project_id,
-               contract_id,
-               contract_type,
-               contract_id_relation,
-               tenant_id,
-               parent_id,
-               dept_category,
-               type,
-               dept_name,
-               full_name,
-               table_type,
-               sort,
-               ancestors,
-               remark,
-               unique_code,
-               partition_code,
-               is_expernode,
-               is_concrete,
-               table_owner,
-               major_data_type,
-               init_table_name,
-               is_link_table,
-               create_user,
-               create_dept,
-               create_time,
-               update_user,
-               update_time,
-               STATUS,
-               is_deleted,
-               excel_id
+        SELECT *
         FROM m_wbs_tree_contract
         WHERE id = #{id}
           AND project_id = #{projectId}
@@ -196,40 +163,7 @@
     </select>
 
     <select id="selectByCondition2" resultType="org.springblade.manager.entity.WbsTreeContract">
-        SELECT id,
-               p_key_id,
-               wbs_id,
-               wbs_type,
-               project_id,
-               contract_id,
-               contract_type,
-               contract_id_relation,
-               tenant_id,
-               parent_id,
-               dept_category,
-               type,
-               dept_name,
-               full_name,
-               table_type,
-               sort,
-               ancestors,
-               remark,
-               unique_code,
-               partition_code,
-               is_expernode,
-               is_concrete,
-               table_owner,
-               major_data_type,
-               init_table_name,
-               is_link_table,
-               create_user,
-               create_dept,
-               create_time,
-               update_user,
-               update_time,
-               STATUS,
-               is_deleted,
-               excel_id
+        SELECT *
         FROM m_wbs_tree_contract
         WHERE id = #{id}
           AND project_id = #{projectId}
@@ -239,40 +173,7 @@
     </select>
 
     <select id="findAllNodeList2" resultType="org.springblade.manager.entity.WbsTreeContract">
-        SELECT id,
-               p_key_id,
-               wbs_id,
-               wbs_type,
-               project_id,
-               contract_id,
-               contract_type,
-               contract_id_relation,
-               tenant_id,
-               parent_id,
-               dept_category,
-               type,
-               dept_name,
-               full_name,
-               table_type,
-               sort,
-               ancestors,
-               remark,
-               unique_code,
-               partition_code,
-               is_expernode,
-               is_concrete,
-               table_owner,
-               major_data_type,
-               init_table_name,
-               is_link_table,
-               create_user,
-               create_dept,
-               create_time,
-               update_user,
-               update_time,
-               STATUS,
-               is_deleted,
-               excel_id
+        SELECT *
         FROM m_wbs_tree_contract
         WHERE project_id = #{projectId}
           AND contract_id = #{contractId}
@@ -324,40 +225,7 @@
     </select>
 
     <select id="selectCondition" resultType="org.springblade.manager.entity.WbsTreeContract">
-        SELECT id,
-               p_key_id,
-               wbs_id,
-               wbs_type,
-               project_id,
-               contract_id,
-               contract_type,
-               contract_id_relation,
-               tenant_id,
-               parent_id,
-               dept_category,
-               type,
-               dept_name,
-               full_name,
-               table_type,
-               sort,
-               ancestors,
-               remark,
-               unique_code,
-               partition_code,
-               is_expernode,
-               is_concrete,
-               table_owner,
-               major_data_type,
-               init_table_name,
-               is_link_table,
-               create_user,
-               create_dept,
-               create_time,
-               update_user,
-               update_time,
-               STATUS,
-               is_deleted,
-               excel_id
+        SELECT *
         FROM m_wbs_tree_contract
         WHERE is_deleted = 1
           AND parent_id = 0
@@ -492,7 +360,7 @@
                 #{tableOwnerList}
             </foreach>
         </if>
-        ORDER BY sort , dept_name,create_time
+        ORDER BY sort,dept_name,create_time
     </select>
 
     <select id="selectRoleInfo" resultType="org.springblade.manager.entity.SaveUserInfoByProject">
@@ -572,15 +440,15 @@
 
     <update id="updateBatchByIds">
         UPDATE m_wbs_tree_contract
-        SET dept_name   = #{wbsTreeList.deptName},
-            full_name   =#{wbsTreeList.deptName},
-            dept_category  = #{wbsTreeList.deptCategory},
-            major_data_type = #{wbsTreeList.majorDataType},
-            unique_code = #{wbsTreeList.uniqueCode},
-            partition_code = #{wbsTreeList.partitionCode},
-            table_type = #{wbsTreeList.tableType},
-            table_owner = #{wbsTreeList.tableOwner}
-        WHERE id = #{wbsTreeList.id}
+        SET dept_name = #{wbsTree.deptName},
+            full_name = #{wbsTree.deptName},
+            dept_category = #{wbsTree.deptCategory},
+            major_data_type = #{wbsTree.majorDataType},
+            unique_code = #{wbsTree.uniqueCode},
+            partition_code = #{wbsTree.partitionCode},
+            table_type = #{wbsTree.tableType},
+            table_owner = #{wbsTree.tableOwner}
+        WHERE id = #{wbsTree.id}
           AND contract_id = #{id}
           AND status = 1
           AND is_deleted = 0
@@ -588,15 +456,15 @@
 
     <update id="updateBatchByIds2">
         UPDATE m_wbs_tree_contract
-        SET dept_name   = #{wbsTreeList.deptName},
-            full_name   = #{wbsTreeList.deptName},
-            dept_category  = #{wbsTreeList.deptCategory},
-            major_data_type = #{wbsTreeList.majorDataType},
-            unique_code = #{wbsTreeList.uniqueCode},
-            partition_code = #{wbsTreeList.partitionCode},
-            table_type = #{wbsTreeList.tableType},
-            table_owner = #{wbsTreeList.tableOwner}
-        WHERE id = #{wbsTreeList.id}
+        SET dept_name = #{wbsTreePrivate.deptName},
+            full_name = #{wbsTreePrivate.deptName},
+            dept_category = #{wbsTreePrivate.deptCategory},
+            major_data_type = #{wbsTreePrivate.majorDataType},
+            unique_code = #{wbsTreePrivate.uniqueCode},
+            partition_code = #{wbsTreePrivate.partitionCode},
+            table_type = #{wbsTreePrivate.tableType},
+            table_owner = #{wbsTreePrivate.tableOwner}
+        WHERE id = #{wbsTreePrivate.id}
           AND contract_id = #{id}
           AND status = 1
           AND is_deleted = 0

+ 23 - 26
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -224,7 +224,7 @@
     </update>
 
     <select id="selectWbsTreePage" resultMap="wbsTreeResultMap">
-        select id, wbs_id, tenant_id, parent_id, dept_category , type, dept_name, full_name, table_type, sort , ancestors, remark, unique_code, partition_code, is_expernode , is_concrete, table_owner, major_data_type, init_table_name, project_node_id , is_link_table, is_exist_form, create_user, create_dept, create_time , update_user, update_time, status, is_deleted
+        select *
         from m_wbs_tree where is_deleted = 0
     </select>
 
@@ -277,35 +277,35 @@
 
     <select id="lazyTree" resultMap="treeNodeResultMap">
         SELECT
-        dept.type AS "type",
-        dept.dept_category AS "deptCategory",
-        dept.is_exist_form AS "isExistForm",
-        dept.table_type,
-        dept.id,
-        dept.parent_id,
-        dept.dept_name AS title,
-        dept.id AS "value",
-        dept.id AS "key",
-        dept.ancestors AS "ancestors",
+        t.type AS "type",
+        t.dept_category AS "deptCategory",
+        t.is_exist_form AS "isExistForm",
+        t.table_type,
+        t.id,
+        t.parent_id,
+        t.dept_name AS title,
+        t.id AS "value",
+        t.id AS "key",
+        t.ancestors AS "ancestors",
         (
         SELECT
         CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
         FROM
         m_wbs_tree
         WHERE
-        parent_id = dept.id and is_deleted = 0
+        parent_id = t.id and is_deleted = 0
         ) AS "has_children"
         FROM
-        m_wbs_tree dept
+        m_wbs_tree t
         WHERE
-        dept.parent_id = #{parentId} AND dept.is_deleted = 0
+        t.parent_id = #{parentId} AND t.is_deleted = 0
         <if test="tenantId!=null and tenantId!=''">
-            and dept.tenant_id = #{tenantId}
+            and t.tenant_id = #{tenantId}
         </if>
-        AND dept.wbs_id = #{wbsId}
-        AND dept.type = 1
+        AND t.wbs_id = #{wbsId}
+        AND t.type = 1
         AND status = 1
-        ORDER BY dept.sort
+        ORDER BY t.sort
     </select>
 
     <select id="selectByNodeTable" resultMap="selectByNodeTableMap">
@@ -327,7 +327,7 @@
             wt.type = 2
         AND wt.is_deleted = 0
         AND wt.parent_id = #{id}
-        ORDER BY wt.sort
+        ORDER BY wt.sort,wt.dept_name,wt.create_time
     </select>
 
     <select id="selectByNodeTableByExcel" resultMap="selectByNodeTableMap">
@@ -374,8 +374,7 @@
     </select>
 
     <select id="findAllNodeTableList" resultType="org.springblade.manager.entity.WbsTree">
-        SELECT
-            id, wbs_id, tenant_id, parent_id, dept_category , type, dept_name, full_name, table_type, sort , ancestors, remark, unique_code, partition_code, is_expernode , is_concrete, table_owner, major_data_type, init_table_name, project_node_id , is_link_table, is_exist_form, create_user, create_dept, create_time , update_user, update_time, status, is_deleted
+        SELECT *
         FROM
             m_wbs_tree
         WHERE
@@ -386,8 +385,7 @@
     </select>
 
     <select id="selectIsTable" resultType="org.springblade.manager.entity.WbsTree">
-        SELECT
-            id, wbs_id, tenant_id, parent_id, dept_category , type, dept_name, full_name, table_type, sort , ancestors, remark, unique_code, partition_code, is_expernode , is_concrete, table_owner, major_data_type, init_table_name, project_node_id , is_link_table, is_exist_form, create_user, create_dept, create_time , update_user, update_time, status, is_deleted
+        SELECT *
         FROM
             m_wbs_tree
         WHERE
@@ -398,8 +396,7 @@
     </select>
 
     <select id="selectNodeAndTable" resultType="org.springblade.manager.entity.WbsTree">
-        SELECT
-            id, wbs_id, tenant_id, parent_id, dept_category , type, dept_name, full_name, table_type, sort , ancestors, remark, unique_code, partition_code, is_expernode , is_concrete, table_owner, major_data_type, init_table_name, project_node_id , is_link_table, is_exist_form, create_user, create_dept, create_time , update_user, update_time, status, is_deleted
+        SELECT *
         FROM
             m_wbs_tree
         WHERE
@@ -409,7 +406,7 @@
     </select>
 
     <select id="selectByWbsId" resultType="org.springblade.manager.entity.WbsTree">
-        SELECT id, wbs_id, tenant_id, parent_id, dept_category , type, dept_name, full_name, table_type, sort , ancestors, remark, unique_code, partition_code, is_expernode , is_concrete, table_owner, major_data_type, init_table_name, project_node_id , is_link_table, is_exist_form, create_user, create_dept, create_time , update_user, update_time, status, is_deleted
+        SELECT *
         FROM m_wbs_tree
         WHERE wbs_id = #{id}
         AND status = 1

+ 7 - 22
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -5,25 +5,18 @@ import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
 import org.springblade.manager.dto.WbsTreePrivateDTO3;
 import org.springblade.manager.entity.WbsTree;
-import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreePrivateVO;
-import org.springblade.manager.vo.WbsTreeVO;
 
 import java.util.List;
 
 public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
     List<WbsTreePrivate> selectAll(Integer wbsType);
 
-    List<WbsTreePrivateVO> tree(@Param("wbsId") String wbsId,
-                                @Param("projectId") String projectId,
-                                @Param("wbsType") Integer wbsType);
+    List<WbsTreePrivateVO> tree(@Param("wbsId") String wbsId, @Param("projectId") String projectId, @Param("wbsType") Integer wbsType);
 
-
-    List<WbsTreePrivate> selectByCondition(@Param("id") String id,
-                                           @Param("wbsId") String wbsId,
-                                           @Param("projectId") String projectId);
+    List<WbsTreePrivate> selectByCondition(@Param("id") String id, @Param("wbsId") String wbsId, @Param("projectId") String projectId);
 
     void deleteByCondition(String id, String wbsId, String projectId);
 
@@ -33,18 +26,11 @@ public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
 
     void updateByCondition(String id, String projectId, String wbsId);
 
-    void updateTableByCondition(@Param("id") String id,
-                                @Param("projectId") String projectId,
-                                @Param("wbsId") String wbsId);
+    void updateTableByCondition(@Param("id") String id, @Param("projectId") String projectId, @Param("wbsId") String wbsId);
 
-    Integer insertCombination1(@Param("snowId") Long snowId,
-                               @Param("wbsTree") WbsTree wbsTree,
-                               @Param("wbsType") Integer wbsType,
-                               @Param("projectId") String projectId);
+    Integer insertCombination1(@Param("snowId") Long snowId, @Param("wbsTree") WbsTree wbsTree, @Param("wbsType") Integer wbsType, @Param("projectId") String projectId);
 
-    Integer insertCombination2(@Param("snowId") Long snowId,
-                               @Param("wbsTree") WbsTreePrivate wbsTree,
-                               @Param("projectId") String projectId);
+    Integer insertCombination2(@Param("snowId") Long snowId, @Param("wbsTree") WbsTreePrivate wbsTree, @Param("projectId") String projectId);
 
     List<WbsTree> selectIsTable(Long tableId, String projectId);
 
@@ -82,9 +68,8 @@ public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
 
     List<WbsTreePrivate> selectByIds(@Param("projectId") String projectId, @Param("ids") List<String> ids);
 
-    void updateBatchByIds(@Param("wbsTreeList") WbsTree wbsTreeList, @Param("projectId") String projectId);
-
-    void updateBatchByIds2(@Param("wbsTreeList") WbsTreePrivate wbsTreeList,@Param("projectId") String projectId,@Param("wbsId") String wbsId);
+    void updateBatchByIds(@Param("wbsTree") WbsTree wbsTree, @Param("projectId") String projectId);
 
+    void updateBatchByIds2(@Param("wbsTreePrivate") WbsTreePrivate wbsTreePrivate, @Param("projectId") String projectId, @Param("wbsId") String wbsId);
 
 }

+ 35 - 234
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -192,8 +192,8 @@
 
     <update id="updateBatchByPid">
         UPDATE m_wbs_tree_private
-        SET dept_name   = #{wbsTreePrivates.deptName},
-            full_name   =#{wbsTreePrivates.deptName},
+        SET dept_name = #{wbsTreePrivates.deptName},
+            full_name =#{wbsTreePrivates.deptName},
             table_type  = #{wbsTreePrivates.tableType},
             table_owner = #{wbsTreePrivates.tableOwner}
         WHERE p_key_id = #{wbsTreePrivates.pKeyId}
@@ -201,15 +201,15 @@
 
     <update id="updateBatchByIds">
         UPDATE m_wbs_tree_private
-        SET dept_name   = #{wbsTreeList.deptName},
-            full_name   =#{wbsTreeList.deptName},
-            dept_category  = #{wbsTreeList.deptCategory},
-            major_data_type = #{wbsTreeList.majorDataType},
-            unique_code = #{wbsTreeList.uniqueCode},
-            partition_code = #{wbsTreeList.partitionCode},
-            table_type = #{wbsTreeList.tableType},
-            table_owner = #{wbsTreeList.tableOwner}
-        WHERE id = #{wbsTreeList.id}
+        SET dept_name = #{wbsTree.deptName},
+            full_name =#{wbsTree.deptName},
+            dept_category = #{wbsTree.deptCategory},
+            major_data_type = #{wbsTree.majorDataType},
+            unique_code = #{wbsTree.uniqueCode},
+            partition_code = #{wbsTree.partitionCode},
+            table_type = #{wbsTree.tableType},
+            table_owner = #{wbsTree.tableOwner}
+        WHERE id = #{wbsTree.id}
         AND project_id = #{projectId}
         AND status = 1
         AND is_deleted = 0
@@ -217,15 +217,15 @@
 
     <update id="updateBatchByIds2">
         UPDATE m_wbs_tree_private
-        SET dept_name   = #{wbsTreeList.deptName},
-            full_name   = #{wbsTreeList.deptName},
-            dept_category  = #{wbsTreeList.deptCategory},
-            major_data_type = #{wbsTreeList.majorDataType},
-            unique_code = #{wbsTreeList.uniqueCode},
-            partition_code = #{wbsTreeList.partitionCode},
-            table_type = #{wbsTreeList.tableType},
-            table_owner = #{wbsTreeList.tableOwner}
-        WHERE id = #{wbsTreeList.id}
+        SET dept_name = #{wbsTreePrivate.deptName},
+            full_name = #{wbsTreePrivate.deptName},
+            dept_category = #{wbsTreePrivate.deptCategory},
+            major_data_type = #{wbsTreePrivate.majorDataType},
+            unique_code = #{wbsTreePrivate.uniqueCode},
+            partition_code = #{wbsTreePrivate.partitionCode},
+            table_type = #{wbsTreePrivate.tableType},
+            table_owner = #{wbsTreePrivate.tableOwner}
+        WHERE id = #{wbsTreePrivate.id}
           AND project_id = #{projectId}
           AND wbs_id = #{wbsId}
           AND status = 1
@@ -312,39 +312,7 @@
     </select>
 
     <select id="selectByCondition" resultType="org.springblade.manager.entity.WbsTreePrivate">
-        SELECT p_key_id,
-               id,
-               wbs_id,
-               wbs_type,
-               project_id,
-               tenant_id,
-               parent_id,
-               ancestors,
-               dept_category,
-               dept_name,
-               full_name,
-               sort,
-               remark,
-               type,
-               table_type,
-               create_time,
-               create_user,
-               create_dept,
-               update_user,
-               update_time,
-               status,
-               is_deleted,
-               unique_code,
-               partition_code,
-               is_expernode,
-               is_concrete,
-               table_owner,
-               major_data_type,
-               init_table_name,
-               is_link_table,
-               excel_id,
-               is_exist_form
-        FROM m_wbs_tree_private
+        SELECT * FROM m_wbs_tree_private
         WHERE (id = #{id}
             AND type = 1
             AND project_id = #{projectId}
@@ -370,39 +338,7 @@
     </select>
 
     <select id="selectIsTable" resultType="org.springblade.manager.entity.WbsTree">
-        SELECT p_key_id,
-               id,
-               wbs_id,
-               wbs_type,
-               project_id,
-               tenant_id,
-               parent_id,
-               ancestors,
-               dept_category,
-               dept_name,
-               full_name,
-               sort,
-               remark,
-               type,
-               table_type,
-               create_time,
-               create_user,
-               create_dept,
-               update_user,
-               update_time,
-               status,
-               is_deleted,
-               unique_code,
-               partition_code,
-               is_expernode,
-               is_concrete,
-               table_owner,
-               major_data_type,
-               init_table_name,
-               is_link_table,
-               excel_id,
-               is_exist_form
-        FROM m_wbs_tree_private
+        SELECT * FROM m_wbs_tree_private
         WHERE type = 2
           AND is_deleted = 0
           AND `status` = 1
@@ -410,15 +346,15 @@
           AND project_id = #{projectId}
     </select>
     <select id="selectByNodeTable" resultType="org.springblade.manager.vo.WbsNodeTableVO">
-        SELECT wt.p_key_id                                                  AS "pKeyId",
-               wt.id                                                        AS id,
-               wt.dept_name                                                 AS tableName,
-               wt.table_type                                                AS tableType,
-               wt.`status`                                                  AS isCreateTable,
-               wt.table_owner                                               as tableOwner,
+        SELECT wt.p_key_id AS "pKeyId",
+               wt.id AS id,
+               wt.dept_name AS tableName,
+               wt.table_type AS tableType,
+               wt.`status` AS isCreateTable,
+               wt.table_owner as tableOwner,
                wt.is_link_table,
                wt.init_table_name,
-               wt.excel_id                                                  as excelId,
+               wt.excel_id as excelId,
                wt.sort,
                wt.status,
                (SELECT count(1) FROM m_wbs_form_element WHERE f_id = wt.id) AS "elementTotal"
@@ -428,42 +364,10 @@
           AND wt.parent_id = #{id}
           AND wt.wbs_id = #{wbsId}
           AND wt.project_id = #{projectId}
-        ORDER BY wt.sort
+        ORDER BY wt.sort,wt.dept_name,wt.create_time
     </select>
     <select id="getByCondition" resultType="org.springblade.manager.entity.WbsTreePrivate">
-        SELECT p_key_id,
-               id,
-               wbs_id,
-               wbs_type,
-               project_id,
-               tenant_id,
-               parent_id,
-               ancestors,
-               dept_category,
-               dept_name,
-               full_name,
-               sort,
-               remark,
-               type,
-               table_type,
-               create_time,
-               create_user,
-               create_dept,
-               update_user,
-               update_time,
-               status,
-               is_deleted,
-               unique_code,
-               partition_code,
-               is_expernode,
-               is_concrete,
-               table_owner,
-               major_data_type,
-               init_table_name,
-               is_link_table,
-               excel_id,
-               is_exist_form
-        FROM m_wbs_tree_private
+        SELECT * FROM m_wbs_tree_private
         WHERE project_id = #{projectId}
           AND id = #{parentId}
           AND wbs_id = #{wbsId}
@@ -472,40 +376,7 @@
           AND type = 1
     </select>
     <select id="getByPKeyId" resultType="org.springblade.manager.entity.WbsTreePrivate">
-        SELECT p_key_id,
-               id,
-               wbs_id,
-               wbs_type,
-               project_id,
-               tenant_id,
-               parent_id,
-               ancestors,
-               dept_category,
-               dept_name,
-               full_name,
-               sort,
-               remark,
-               type,
-               table_type,
-               create_time,
-               create_user,
-               create_dept,
-               update_user,
-               update_time,
-               status,
-               is_deleted,
-               unique_code,
-               partition_code,
-               is_expernode,
-               is_concrete,
-               table_owner,
-               major_data_type,
-               init_table_name,
-               is_link_table,
-               excel_id,
-               is_exist_form,
-               html_url
-        FROM m_wbs_tree_private
+        SELECT * FROM m_wbs_tree_private
         WHERE p_key_id = #{pKeyId}
     </select>
 
@@ -521,39 +392,7 @@
           AND parent_id = 0
     </select>
     <select id="selectByPKeyId" resultType="org.springblade.manager.entity.WbsTreePrivate">
-        SELECT p_key_id,
-               id,
-               wbs_id,
-               wbs_type,
-               project_id,
-               tenant_id,
-               parent_id,
-               ancestors,
-               dept_category,
-               dept_name,
-               full_name,
-               sort,
-               remark,
-               type,
-               table_type,
-               create_time,
-               create_user,
-               create_dept,
-               update_user,
-               update_time,
-               status,
-               is_deleted,
-               unique_code,
-               partition_code,
-               is_expernode,
-               is_concrete,
-               table_owner,
-               major_data_type,
-               init_table_name,
-               is_link_table,
-               excel_id,
-               is_exist_form
-        FROM m_wbs_tree_private
+        SELECT * FROM m_wbs_tree_private
         WHERE p_key_id = #{referenceWbsTemplateId}
     </select>
 
@@ -570,12 +409,7 @@
     </select>
 
     <select id="selectNodeAndTable" resultType="org.springblade.manager.entity.WbsTreePrivate">
-        SELECT
-        p_key_id,id,wbs_id,wbs_type,project_id,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,type,
-        table_type,create_time,create_user,
-        create_dept,update_user,update_time,status,is_deleted,unique_code,partition_code,is_expernode,
-        is_concrete,table_owner,major_data_type,init_table_name,is_link_table,excel_id,is_exist_form,html_url
-        FROM m_wbs_tree_private
+        SELECT * FROM m_wbs_tree_private
         WHERE (
         type = 1
         <if test="id != null and id != ''">
@@ -597,40 +431,7 @@
     </select>
 
     <select id="selectNodeAndTable2" resultType="org.springblade.manager.entity.WbsTreePrivate">
-        SELECT p_key_id,
-               id,
-               wbs_id,
-               wbs_type,
-               project_id,
-               tenant_id,
-               parent_id,
-               ancestors,
-               dept_category,
-               dept_name,
-               full_name,
-               sort,
-               remark,
-               type,
-               table_type,
-               create_time,
-               create_user,
-               create_dept,
-               update_user,
-               update_time,
-               status,
-               is_deleted,
-               unique_code,
-               partition_code,
-               is_expernode,
-               is_concrete,
-               table_owner,
-               major_data_type,
-               init_table_name,
-               is_link_table,
-               excel_id,
-               is_exist_form,
-               html_url
-        FROM m_wbs_tree_private
+        SELECT * FROM m_wbs_tree_private
         WHERE project_id = #{referencePrivateWbsProjectId}
           AND wbs_id = #{wbsId}
           AND STATUS = 1

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

@@ -30,11 +30,11 @@ public interface IWbsFormElementService extends BaseService<WbsFormElement> {
 
     void importElement(List<WbsFormElementExcel> data, Boolean isCovered, String tableId);
 
-    R saveAndSyn(WbsFormElement wbsFormElement, String tableName);
+    boolean saveAndSyn(WbsFormElement wbsFormElement, String tableName);
 
     boolean deleteAndSyn(String ids, String elementName, String tableName);
 
-    String updateAndSyn(List<WbsFormElement> wbsFormElementList, String initTableName);
+    boolean updateAndSyn(List<WbsFormElement> wbsFormElementList, String initTableName);
 
     List<WbsFormElementDTO2> findWbsTreeTableSameLevel(String parentId);
 

+ 2 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java

@@ -36,9 +36,8 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
 
     boolean updateStatus(String pKeyId);
 
-    boolean updateBatchByIds(List<WbsTree> wbsTreeListAll,String projectId);
-
-    boolean updateBatchByIds2(List<WbsTreePrivate> wbsTreePrivates, String projectId,String wbsId);
+    boolean updateBatchByIds(List<WbsTree> wbsTreeListAll, List<WbsTreePrivate> wbsTreePrivatesAll, String projectId);
 
+    boolean updateBatchByIds2(List<WbsTreePrivate> wbsTreePrivates, List<WbsTreePrivate> wbsTreePrivatesAllNow, String projectId, String wbsId);
 
 }

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

@@ -40,7 +40,7 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
 
     WbsTreeAllListVO findWbsTreeList(Integer type);
 
-    R saveFormElement(FormElementDTO formElementDTO);
+    boolean saveFormElement(FormElementDTO formElementDTO);
 
     int deleteBatchByProjectNodeId(Long projectNodeId);
 

+ 15 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -39,6 +39,7 @@ import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.formula.KeyMapper;
 import org.springblade.manager.service.IFormulaService;
+import org.springblade.manager.service.IWbsParamService;
 import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.manager.vo.ExceTabTreVO;
@@ -72,6 +73,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 	private final IWbsTreeService wbsTreeService;
 	private final IFormulaService formulaService;
 	private final JdbcTemplate jdbcTemplate;
+
+	private final IWbsParamService wbsParamService;
+
 	@Override
 	public IPage<ExcelTabVO> selectExcelTabPage(IPage<ExcelTabVO> page, ExcelTabVO excelTab) {
 		return page.setRecords(baseMapper.selectExcelTabPage(page, excelTab));
@@ -247,12 +251,14 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 				String tabName = wbsTreeContract.getInitTableName();
 
 				// 判读修改还是 添加
-				String querySql = "select * from "+tabName+" where p_key_id="+tableInfo.getPkeyId() ;
-				List<Map<String, Object>> dataIn = jdbcTemplate.queryForList(querySql);
+			//	String querySql = "select * from "+tabName+" where p_key_id="+tableInfo.getPkeyId() ;
+			//	List<Map<String, Object>> dataIn = jdbcTemplate.queryForList(querySql);
+				String delSql = "delete from "+tabName+" where p_key_id="+tableInfo.getPkeyId();
+				jdbcTemplate.execute(delSql);
 
 				String sqlInfo="";
                  LinkedHashMap<String,String> dataMap2 = tableInfo.getDataMap();
-				if(dataIn.isEmpty()){ //插入
+			//	if(dataIn.isEmpty()){ //插入
 					sqlInfo = "INSERT INTO "+tabName+" ( ";
 					String keyStr = "id,";
 					String valStr = SnowFlakeUtil.getId() + ",";
@@ -268,16 +274,19 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 					WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
 							.eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId,tableInfo.getContractId()));
 
+					//处理文件提名
+					String fileName = this.wbsParamService.crateFileTitle(wbsTreeContractByP.getPKeyId(), Long.parseLong(wbsTreeContractByP.getContractId()));
+
 					//huangjn 保存成功后调用生成资料查询列表数据
-					this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId()+"", "文件名称(后面再完善)", Integer.parseInt(tableInfo.getClassify()), 2);
-				}else{ //更新
+					this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId()+"", fileName, Integer.parseInt(tableInfo.getClassify()), 2);
+				/*}else{ //更新
 					sqlInfo = "update  "+tabName+" set ";
 					for (String keys : dataMap2.keySet()){
 						sqlInfo += keys+"='"+dataMap2.get(keys)+"',";
 					}
 					sqlInfo=sqlInfo.substring(0,sqlInfo.lastIndexOf(","));
 					sqlInfo = sqlInfo + " where p_key_id="+tableInfo.getPkeyId();
-				}
+				}*/
 
 				UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
 				updateWrapper.in("p_key_id",tableInfo.getPkeyId());

+ 164 - 101
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -62,10 +62,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     @Override
     public boolean addFormElement(WbsFormElement wbsFormElement) {
         int insert1 = baseMapper.insert(wbsFormElement);
-        if (insert1 > 0) {
-            return true;
-        }
-        return false;
+        return insert1 > 0;
     }
 
     @Override
@@ -77,29 +74,23 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         }
         List<WbsFormElement> wbsFormElements = baseMapper.selectBatchIds(ids);
 
-        if ((wbsFormElements).equals(wbsFormElementList)) {
-            return false;
-        }
-        return true;
+        return !(wbsFormElements).equals(wbsFormElementList);
     }
 
     @Override
     public Boolean initTable(List<WbsFormElement> elementList, String tableName) {
         String sql = createSQL(elementList);
         //建表
-        Integer row = wbsFormElementMapper.createTable(sql, tableName);
-        if (row >= 0) {
-            return true;
-        }
-        return false;
+        return wbsFormElementMapper.createTable(sql, tableName) >= 0;
     }
 
     private String createSQL(List<WbsFormElement> elementList) {
-        StringBuffer sbr = new StringBuffer();
+        StringBuilder sbr = new StringBuilder();
         for (WbsFormElement wbsFormElement : elementList) {
+            /* 字段类型不默认
             //获取字段名、类型、长度
             String fieldNameKey = wbsFormElement.getEKey();
-            String fieldType = judgeDataType(wbsFormElement.getEType());
+            String fieldType = getInitTableFiledType(wbsFormElement.getEType());
             String fieldLength = String.valueOf(wbsFormElement.getELength());
 
             sbr.append("" + fieldNameKey + "");
@@ -111,23 +102,17 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                 sbr.append(" " + fieldType + "(" + fieldLength + ") ,\n");
             } else if ("datetime".equals(fieldType)) {
                 sbr.append(" " + fieldType + "(" + fieldLength + ") ,\n");
-            }
-        }
-        return String.valueOf(sbr);
-    }
+            }*/
+
+            //默认字段类型=varchar 长度=255
+            String fieldNameKey = wbsFormElement.getEKey();
+            String fieldType = "varchar";
+            String fieldLength = "255";
+            sbr.append(fieldNameKey);
+            sbr.append(" ").append(fieldType).append("(").append(fieldLength).append(") ,\n");
 
-    private String judgeDataType(Integer type) {
-        switch (type) {
-            case 2:
-                return "bigint";
-            case 3:
-                return "decimal";
-            case 4:
-                return "datetime";
-            case 1:
-            default:
-                return "varchar";
         }
+        return String.valueOf(sbr);
     }
 
     @Override
@@ -140,7 +125,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     @Override
     public void importElement(List<WbsFormElementExcel> data, Boolean isCovered, String tableId) {
         List<WbsFormElement> list = new ArrayList<>();
-        data.stream().forEach(excel -> {
+        data.forEach(excel -> {
             WbsFormElement wbsFormElement = new WbsFormElement();
             wbsFormElement.setEName(excel.getElementName());
             wbsFormElement.setEType(Integer.valueOf(excel.getElementType()));
@@ -158,13 +143,10 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     }
 
     @Override
-    public R saveAndSyn(WbsFormElement wbsFormElement, String tableName) {
-        //新增元素字段
-        //查询当前元素表中元素的最后一个key_?值
+    public boolean saveAndSyn(WbsFormElement wbsFormElement, String tableName) {
         try {
-            QueryWrapper<WbsFormElement> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("f_id", wbsFormElement.getFId());
-            List<WbsFormElement> wbsFormElements = baseMapper.selectList(queryWrapper);
+            //获取当前表单下所有元素
+            List<WbsFormElement> wbsFormElements = baseMapper.selectList(Wrappers.<WbsFormElement>query().lambda().eq(WbsFormElement::getFId, wbsFormElement.getFId()));
             String substring = "";
             List<String> eKeyNum = new ArrayList<>();
             if (wbsFormElements.size() > 0) {
@@ -187,104 +169,165 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
             String newName = wbsFormElement.getEKey();
             wbsFormElement.setStatus(1);
 
-            //同步
             StringBuilder sbr1 = new StringBuilder();
-            String fieldType = judgeDataType(wbsFormElement.getEType());
+            String fieldType = getInitTableFiledType(wbsFormElement.getEType());
 
             if ("varchar".equals(fieldType)) {
                 if (wbsFormElement.getELength() > 1000 || wbsFormElement.getELength() < 10) {
-                    return R.fail("请输入正确的字符串长度,范围为10-1000");
+                    throw new ServiceException("请输入正确的长度,范围为10-1000");
                 } else {
+                    //新增
                     baseMapper.insert(wbsFormElement);
 
-                    sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
+                    //同步
+                    //sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
+
+                    sbr1.append(" ").append("varchar").append("(").append(wbsFormElement.getELength()).append(")");
                     String sql = newName + " " + sbr1;
                     baseMapper.alterAddFiled(sql, tableName);
-                    return R.data(wbsFormElement, "操作成功");
+                    return true;
                 }
+
             } else if ("bigint".equals(fieldType)) {
                 if (wbsFormElement.getELength() > 255 || wbsFormElement.getELength() < 10) {
-                    return R.fail("请输入正确的整数长度,范围为10-255");
+                    throw new ServiceException("请输入正确的长度,范围为10-255");
                 } else {
+                    //新增
                     baseMapper.insert(wbsFormElement);
-                    sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
+
+                    //同步
+                    //sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
+
+                    wbsFormElement.setELength(255);
+
+                    sbr1.append(" ").append("varchar").append("(").append(wbsFormElement.getELength()).append(")");
                     String sql = newName + " " + sbr1;
                     baseMapper.alterAddFiled(sql, tableName);
-                    return R.data(wbsFormElement, "操作成功");
+                    return true;
                 }
+
             } else if ("decimal".equals(fieldType)) {
                 if (wbsFormElement.getELength() > 65 || wbsFormElement.getELength() < 10) {
-                    return R.fail("请输入正确的小数长度,范围为10-65");
+                    throw new ServiceException("请输入正确的长度,范围为10-65");
                 } else {
+                    //新增
                     baseMapper.insert(wbsFormElement);
-                    sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
+
+                    //同步
+                    //sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
+
+                    wbsFormElement.setELength(255);
+
+                    sbr1.append(" ").append("varchar").append("(").append(wbsFormElement.getELength()).append(")");
                     String sql = newName + " " + sbr1;
                     baseMapper.alterAddFiled(sql, tableName);
-                    return R.data(wbsFormElement, "操作成功");
+                    return true;
                 }
             } else if ("datetime".equals(fieldType)) {
-                baseMapper.insert(wbsFormElement);
-                sbr1.append(" ").append(fieldType).append("(").append(0).append(")");
-                String sql = newName + " " + sbr1;
-                baseMapper.alterAddFiled(sql, tableName);
-                return R.data(wbsFormElement, "操作成功");
+                if (wbsFormElement.getELength() != 0) {
+                    throw new ServiceException("请输入正确的长度,范围为0");
+                } else {
+                    //新增
+                    baseMapper.insert(wbsFormElement);
+
+                    //同步
+                    //sbr1.append(" ").append(fieldType).append("(").append(0).append(")");
+
+                    wbsFormElement.setELength(255);
+
+                    sbr1.append(" ").append("varchar").append("(").append(wbsFormElement.getELength()).append(")");
+                    String sql = newName + " " + sbr1;
+                    baseMapper.alterAddFiled(sql, tableName);
+                    return true;
+                }
             }
 
         } catch (Exception e) {
             baseMapper.deleteElement(wbsFormElement);
             throw new ServiceException("未获取到对应实体表信息,新增失败");
         }
-
-        return R.fail("操作失败");
+        return false;
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean deleteAndSyn(String ids, String eKey, String tableName) {
-        deleteLogic(Func.toLongList(ids));
+        //判断字段是否存在实体表中
         int row = baseMapper.judgeFiled(eKey, tableName);
+
         if (row > 0) {
+            //是否存在填报数据
+            int row1 = baseMapper.assertFiledExist(tableName, eKey);
+            if (row1 > 0) {
+                throw new ServiceException("当前元素字段存在填报数据,删除失败");
+            }
+
+            //删除实体表字段
             baseMapper.deleteTableFiled(eKey, tableName);
         }
+
+        //逻辑删除元素字段
+        deleteLogic(Func.toLongList(ids));
+
         return true;
     }
 
     @Override
-    public String updateAndSyn(List<WbsFormElement> wbsFormElementList, String initTableName) {
-        QueryWrapper<WbsFormElement> queryWrapper = new QueryWrapper<>();
-        String fId = "";
-        for (WbsFormElement wbsFormElement : wbsFormElementList) {
-            fId = wbsFormElement.getFId();
-        }
-
-        queryWrapper.eq("f_id", fId);
-        List<WbsFormElement> wbsFormElements = baseMapper.selectList(queryWrapper);
-        for (WbsFormElement wbsFormElement : wbsFormElements) {
-            String eKey = wbsFormElement.getEKey();
-            Integer eLength = wbsFormElement.getELength();
-            String eType = judgeDataType(wbsFormElement.getEType());
-
-            if (eType.equals("bigint") && (eLength > 255 || eLength < 10)) {  //整数
-                return "2";
-            } else if (eType.equals("varchar") && (eLength > 1000 || eLength < 10)) {  //字符串
-                return "1";
-            } else if (eType.equals("decimal") && (eLength > 65 || eLength < 10)) {  //小数
-                return "3";
+    @Transactional(rollbackFor = Exception.class)
+    public boolean updateAndSyn(List<WbsFormElement> wbsFormElementList, String initTableName) {
+        //修改元素基础信息
+        wbsFormElementList.forEach(obj -> obj.setStatus(1));
+        boolean b = this.updateBatchById(wbsFormElementList);
+
+        //修改实体表信息
+        if (b) {
+            String fId = "";
+            for (WbsFormElement wbsFormElement : wbsFormElementList) {
+                fId = wbsFormElement.getFId();
+                break;
             }
-            try {
-                baseMapper.updateFiledType(initTableName, eKey, eType, eLength);
-            } catch (Exception e) {
-                throw new ServiceException("未获取到对应实体表信息,修改失败");
+            //当前元素表下所有元素信息
+            List<WbsFormElement> wbsFormElements = baseMapper.selectList(Wrappers.<WbsFormElement>query().lambda().eq(WbsFormElement::getFId, fId));
+
+            for (WbsFormElement wbsFormElement : wbsFormElements) {
+                String eKey = wbsFormElement.getEKey();
+                Integer eLength = wbsFormElement.getELength();
+                String eType = getInitTableFiledType(wbsFormElement.getEType());
+
+                if (eType.equals("bigint") && (eLength > 255 || eLength < 10)) {
+                    throw new ServiceException("请输入正确长度,该类型范围为10-255之间");
+                } else if (eType.equals("varchar") && (eLength > 1000 || eLength < 10)) {
+                    throw new ServiceException("请输入正确长度,该类型范围为10-1000之间");
+                } else if (eType.equals("decimal") && (eLength > 65 || eLength < 10)) {
+                    throw new ServiceException("请输入正确长度,该类型范围为10-65之间");
+                }
+
+                /*//当前字段类型
+                String filedTypeOld = baseMapper.selectFiledType(initTableName, eKey);
+
+                if (!eType.equals(filedTypeOld)) {
+                    //修改前判断,字段是否存在填报数据
+                    int row = baseMapper.assertFiledExist(initTableName, eKey);
+                    if (row > 0) {
+                        throw new ServiceException("选择修改的元素字段下存在填报数据,不允许修改字段类型");
+                    }
+                }*/
+
+                //设置默认长度
+                if (eLength < 255) {
+                    eLength = 255;
+                }
+                //修改
+                baseMapper.updateFiledType(initTableName, eKey, "varchar", eLength);
             }
         }
 
-        return "0";
+        return true;
     }
 
     @Override
     public List<WbsFormElementDTO2> findWbsTreeTableSameLevel(String parentId) {
         return baseMapper.selectWbsTreeTableListByParentId(parentId);
-
     }
 
     @Override
@@ -299,7 +342,6 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
             number++;
         }
         return true;
-
     }
 
     @Override
@@ -311,17 +353,14 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     @Override
     public void importElement2(List<WbsFormElementBatchExcel> data, Boolean isCovered, String tableId) {
         //TODO
-
     }
 
     @Override
     public WbsFormElement searchElementDetailByTableElementKey(String fId, String tableElementKey) {
         String[] s = tableElementKey.split("_");
-        /*WbsTree wbsTree = baseMapper.selectElementInTableByFid(fId);*/
         return baseMapper.selectOne(Wrappers.<WbsFormElement>query().lambda()
                 .eq(WbsFormElement::getFId, fId)
                 .eq(WbsFormElement::getEName, s[1]));
-
     }
 
     @Override
@@ -369,7 +408,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
             this.saveFormElement(formElementDTO);
 
         } else if (formElementDTO.getSubmitStatus() == 1) {
-            if (formElementDTO.getElementList().size() <=0 ){
+            if (formElementDTO.getElementList().size() <= 0) {
                 throw new ServiceException("请添加至少一个元素信息");
             }
             //关联-在已有元素表中新增元素,在实体表中追加字段
@@ -390,7 +429,6 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                         if (obj != 1) {
                             //不存在对应实体表的元素表不新增同步元素字段
                             continue;
-                            //throw new ServiceException(StringUtil.format("未获取到 {} 对应实体表信息,同步失败",wbsTree.getDeptName()));
                         }
 
                         //获取表单下的元素信息
@@ -400,7 +438,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                         WbsFormElement firstWbsFormElement;
                         List<WbsFormElement> newList;
                         //存在元素
-                        if(wbsFormElements.size() > 0){
+                        if (wbsFormElements.size() > 0) {
                             Collections.reverse(wbsFormElements);
                             firstWbsFormElement = wbsFormElements.stream().findFirst().orElse(wbsFormElements.get(wbsFormElements.size() - 1));
 
@@ -409,7 +447,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                                     !wbsFormElements.stream().map(WbsFormElement::getEName).collect(Collectors.toList()).contains(a.getEName())
                             ).collect(Collectors.toList());
 
-                        }else {
+                        } else {
                             //不存在元素
                             firstWbsFormElement = new WbsFormElement();
                             firstWbsFormElement.setEKey("key_0");
@@ -430,8 +468,12 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
                             baseMapper.insert(wbsFormElementInfo);
 
-                            String eTypeFiled = getInitTableFiledType(wbsFormElementInfo.getEType());
-                            int eLengthFiled = Integer.parseInt(setDefaultElementLength(wbsFormElementInfo.getEType()));
+                            //String eTypeFiled = getInitTableFiledType(wbsFormElementInfo.getEType());
+                            //int eLengthFiled = Integer.parseInt(setDefaultElementLength(wbsFormElementInfo.getEType()));
+
+                            //初始化默认值varchar 长度255
+                            String eTypeFiled = "varchar";
+                            int eLengthFiled = 255;
 
                             //判断是否存在该Key字段
                             int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
@@ -448,12 +490,10 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                             }
                             newKeyNumber++;
                         }
-
                     }
                 }
             }
         }
-
         return true;
     }
 
@@ -484,7 +524,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                 WbsFormElement firstWbsFormElement;
                 List<WbsFormElement> newList;
                 //存在元素
-                if(wbsFormElements.size() > 0){
+                if (wbsFormElements.size() > 0) {
                     Collections.reverse(wbsFormElements);
                     firstWbsFormElement = wbsFormElements.stream().findFirst().orElse(wbsFormElements.get(wbsFormElements.size() - 1));
 
@@ -493,7 +533,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                             !wbsFormElements.stream().map(WbsFormElement::getEName).collect(Collectors.toList()).contains(a.getEName())
                     ).collect(Collectors.toList());
 
-                }else {
+                } else {
                     //不存在元素
                     firstWbsFormElement = new WbsFormElement();
                     firstWbsFormElement.setEKey("key_0");
@@ -514,8 +554,12 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
                     baseMapper.insert(wbsFormElementInfo);
 
-                    String eTypeFiled = getInitTableFiledType(wbsFormElementInfo.getEType());
-                    int eLengthFiled = Integer.parseInt(setDefaultElementLength(wbsFormElementInfo.getEType()));
+                    //String eTypeFiled = getInitTableFiledType(wbsFormElementInfo.getEType());
+                    //int eLengthFiled = Integer.parseInt(setDefaultElementLength(wbsFormElementInfo.getEType()));
+
+                    //初始化默认值varchar 长度255
+                    String eTypeFiled = "varchar";
+                    int eLengthFiled = 255;
 
                     //判断是否存在该Key字段
                     int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
@@ -545,7 +589,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         if (nodeIds.size() <= 0) {
             throw new ServiceException("请至少选择一个节点进行新增操作");
         } else {
-            if (formElementDTO.getElementList().size() <=0 ){
+            if (formElementDTO.getElementList().size() <= 0) {
                 throw new ServiceException("请添加至少一个元素信息");
             }
             for (String nodeId : nodeIds) {
@@ -666,9 +710,14 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
     public boolean syncDataFiled(String initTableName, List<WbsFormElement> listData) {
         for (WbsFormElement listDatum : listData) {
-            String initTableFiledType = getInitTableFiledType(listDatum.getEType());
-            int elementLength = getElementLength(initTableFiledType);
+            // String initTableFiledType = getInitTableFiledType(listDatum.getEType());
+            // int elementLength = getElementLength(initTableFiledType);
+
+            //默认初始化值
             String eKey = listDatum.getEKey();
+            String initTableFiledType = "varchar";
+            Integer elementLength = 255;
+
             //同步
             baseMapper.addTableFiled(initTableName, eKey, initTableFiledType, elementLength);
         }
@@ -748,6 +797,20 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         }
     }
 
+    private String judgeDataType(Integer type) {
+        switch (type) {
+            case 2:
+                return "bigint";
+            case 3:
+                return "decimal";
+            case 4:
+                return "datetime";
+            case 1:
+            default:
+                return "varchar";
+        }
+    }
+
     private static String getPinyin(String text, String separator) {
         //text 文本, separator 转换后添加的分隔符
         char[] chars = text.toCharArray();

+ 14 - 14
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -65,10 +65,10 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         List<String> idList = Arrays.asList(ids);
         List<String> idList1 = idList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
 
-        //获取当前合同段wbs所有节点+表单(不包括客户端新增或者复制节点)
+        //获取当前合同段wbs所有节点表单(不包括客户端新增或者复制节点)
         List<WbsTreeContract> list = baseMapper.findAllNodeList2(pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
 
-        //当前合同段所有节点下表单Id
+        //当前合同段所有表单Id
         List<String> collect3 = new ArrayList<>();
         //当前合同段所有节点Id
         List<String> collect7 = new ArrayList<>();
@@ -103,8 +103,8 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             );
 
             //只获取当前引用节点下的所有表
-            wbsTreePrivateList.stream().forEach(wbsTreePrivate -> {
-                idList1.stream().forEach(id -> {
+            wbsTreePrivateList.forEach(wbsTreePrivate -> {
+                idList1.forEach(id -> {
                     if (Long.parseLong(id) == (wbsTreePrivate.getParentId()) && wbsTreePrivate.getType() == 2) {
                         //表
                         wbsTreePrivateList2.add(wbsTreePrivate);
@@ -124,15 +124,14 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             if (collect2.size() > collect3.size()) {
                 //初始化
                 List<WbsTreeContract> wbsTreeContracts = new ArrayList<>();
-                wbsTreePrivateList.stream().forEach(wbsTreePrivate -> {
-                    diffRent1.stream().forEach(id -> {
+                wbsTreePrivateList.forEach(wbsTreePrivate -> {
+                    diffRent1.forEach(id -> {
                         if (Long.parseLong(id) == (wbsTreePrivate.getId())) {
                             WbsTreeContract wbsTreeContract = getWbsTreeContract(wbsTreePrivate, pawDTO);
                             wbsTreeContracts.add(wbsTreeContract);
                         }
                     });
                 });
-
                 this.saveBatch(wbsTreeContracts, 10000);
             }
 
@@ -167,10 +166,8 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                     String names = StringUtils.join(nodeNames, " , ");
                     throw new ServiceException(StringUtil.format("节点下的 {} 中存在填报数据,删除失败!", names));
                 }
-
                 //删除
                 baseMapper.deleteBatch(ids1, pawDTO.getWbsId(), pawDTO.getProjectId(), pawDTO.getContractId());
-
             }
 
             //新增
@@ -179,8 +176,9 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 List<WbsTreePrivate> wbsTreePrivatesList = new ArrayList<>();
                 ArrayList<ConstructionLedger> constructionLedgerList = new ArrayList<>();
 
-                //获取wbs私有树下节点+表 saveIds=新增的节点id
+                //获取wbs私有树下节点表 saveIds=新增的节点id
                 List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectNodeAndTable2(pawDTO.getWbsId(), pawDTO.getProjectId());
+
                 for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
                     for (String id : saveIds) {
                         if (Long.parseLong(id) == (wbsTreePrivate.getId())) {
@@ -194,7 +192,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 }
 
                 //初始化
-                wbsTreePrivatesList.stream().forEach(wbsTreePrivate -> {
+                wbsTreePrivatesList.forEach(wbsTreePrivate -> {
                     //节点、表信息
                     WbsTreeContract wbsTreeContract = getWbsTreeContract(wbsTreePrivate, pawDTO);
                     wbsTreeContractList.add(wbsTreeContract);
@@ -209,7 +207,6 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                         constructionLedger.setContractId(Long.parseLong(pawDTO.getContractId()));
                         constructionLedgerList.add(constructionLedger);
                     }
-
                 });
 
                 //新增合同段wbs树、元素表
@@ -217,9 +214,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
 
                 //新增施工台账
                 constructionLedgerFeign.initConstructionLedger(constructionLedgerList);
-
             }
-
         }
 
         return true;
@@ -259,6 +254,11 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         wbsTreeContract.setExcelId(wbsTree.getExcelId());
         wbsTreeContract.setHtmlUrl(wbsTree.getHtmlUrl());
         wbsTreeContract.setIsBussShow(1);
+        wbsTreeContract.setCreateTime(wbsTree.getCreateTime());
+        wbsTreeContract.setUpdateTime(wbsTree.getUpdateTime());
+        wbsTreeContract.setUpdateUser(wbsTree.getUpdateUser());
+        wbsTreeContract.setCreateUser(wbsTree.getCreateUser());
+        wbsTreeContract.setCreateDept(wbsTree.getCreateDept());
         if (wbsTree.getType() == 2) {
             wbsTreeContract.setIsTypePrivatePid(wbsTree.getPKeyId());
         }

+ 43 - 19
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -9,7 +9,6 @@ import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
 import org.springblade.manager.dto.WbsTreePrivateDTO3;
@@ -19,7 +18,6 @@ import org.springblade.manager.mapper.ContractInfoMapper;
 import org.springblade.manager.mapper.WbsInfoMapper;
 import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
-import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreePrivateVO;
@@ -40,7 +38,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     private final ContractInfoMapper contractInfoMapper;
     private final WbsInfoMapper wbsInfoMapper;
 
-
     @Override
     public List<WbsTreePrivateVO> tree(String wbsId, String projectId) {
         //获取wbsType
@@ -165,7 +162,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 String projectId = objPrivate.getProjectId();
                 String wbsId = objPrivate.getWbsId();
                 Long id = objPrivate.getId();
-
                 //合同段wbs树同步排序
                 LambdaUpdateWrapper<WbsTreeContract> updateWrapper = new LambdaUpdateWrapper<>();
                 updateWrapper.eq(WbsTreeContract::getWbsId, wbsId);
@@ -266,32 +262,60 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
     @Override
-    public boolean updateBatchByIds(List<WbsTree> wbsTreeListAll, String projectId) {
+    public boolean updateBatchByIds(List<WbsTree> wbsTreeListAll, List<WbsTreePrivate> wbsTreePrivatesAll, String projectId) {
         //获取当前项目下所有合同段信息
         List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, projectId));
-        for (WbsTree wbsTreeList : wbsTreeListAll) {
-            //修改项目wbs节点信息、元素表基础信息
-            baseMapper.updateBatchByIds(wbsTreeList, projectId);
-            for (ContractInfo contractInfo : contractInfos) {
-                //修改合同段wbs节点信息、元素表基础信息
-                wbsTreeContractMapper.updateBatchByIds(wbsTreeList, contractInfo.getId());
+
+        for (WbsTree wbsTree : wbsTreeListAll) {
+            for (WbsTreePrivate wbsTreePrivate : wbsTreePrivatesAll) {
+                //判断相同节点基础信息、元素表类型、元素表所属方 是否发生改变
+                if (wbsTree.getId().equals(wbsTreePrivate.getId()) &&
+                        (!wbsTree.getDeptName().equals(wbsTreePrivate.getDeptName())
+                                || (wbsTree.getDeptCategory() != null && !wbsTree.getDeptCategory().equals(wbsTreePrivate.getDeptCategory()))
+                                || (wbsTree.getPartitionCode() != null && !wbsTree.getPartitionCode().equals(wbsTreePrivate.getPartitionCode()))
+                                || (wbsTree.getUniqueCode() != null && !wbsTree.getUniqueCode().equals(wbsTreePrivate.getUniqueCode()))
+                                || (wbsTree.getMajorDataType() != null && !wbsTree.getMajorDataType().equals(wbsTreePrivate.getMajorDataType()))
+                                || (wbsTree.getTableType() != null && !wbsTree.getTableType().equals(wbsTreePrivate.getTableType()))
+                                || (wbsTree.getTableOwner() != null && !wbsTree.getTableOwner().equals(wbsTreePrivate.getTableOwner())))) {
+                    //同步修改私有项目节点、元素表基础信息
+                    baseMapper.updateBatchByIds(wbsTree, projectId);
+
+                    //同步修改合同段节点信息、元素表基础信息
+                    for (ContractInfo contractInfo : contractInfos) {
+                        wbsTreeContractMapper.updateBatchByIds(wbsTree, contractInfo.getId());
+                    }
+                }
             }
         }
         return true;
     }
 
-
     @Override
-    public boolean updateBatchByIds2(List<WbsTreePrivate> wbsTreePrivates, String projectId, String wbsId) {
+    public boolean updateBatchByIds2(List<WbsTreePrivate> wbsTreePrivates, List<WbsTreePrivate> wbsTreePrivatesAllNow, String projectId, String wbsId) {
         //获取当前项目下所有合同段信息
         List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, projectId));
-        for (WbsTreePrivate wbsTreeList : wbsTreePrivates) {
-            //修改项目wbs信息
-            baseMapper.updateBatchByIds2(wbsTreeList, projectId, wbsId);
 
-            for (ContractInfo contractInfo : contractInfos) {
-                //修改合同段wbs信息
-                wbsTreeContractMapper.updateBatchByIds2(wbsTreeList, contractInfo.getId());
+        for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
+            for (WbsTreePrivate treePrivateNow : wbsTreePrivatesAllNow) {
+                //判断相同节点基础信息、元素表类型、元素表所属方 是否发生改变
+                if (wbsTreePrivate.getId().equals(treePrivateNow.getId()) &&
+                        (!wbsTreePrivate.getDeptName().equals(treePrivateNow.getDeptName())
+                                || (wbsTreePrivate.getDeptCategory() != null && !wbsTreePrivate.getDeptCategory().equals(treePrivateNow.getDeptCategory()))
+                                || (wbsTreePrivate.getPartitionCode() != null && !wbsTreePrivate.getPartitionCode().equals(treePrivateNow.getPartitionCode()))
+                                || (wbsTreePrivate.getUniqueCode() != null && !wbsTreePrivate.getUniqueCode().equals(treePrivateNow.getUniqueCode()))
+                                || (wbsTreePrivate.getMajorDataType() != null && !wbsTreePrivate.getMajorDataType().equals(treePrivateNow.getMajorDataType()))
+                                || (wbsTreePrivate.getTableType() != null && !wbsTreePrivate.getTableType().equals(treePrivateNow.getTableType()))
+                                || (wbsTreePrivate.getTableOwner() != null && !wbsTreePrivate.getTableOwner().equals(treePrivateNow.getTableOwner())))) {
+
+                    //修改项目wbs信息
+                    baseMapper.updateBatchByIds2(wbsTreePrivate, projectId, wbsId);
+
+                    for (ContractInfo contractInfo : contractInfos) {
+                        //修改合同段wbs信息
+                        wbsTreeContractMapper.updateBatchByIds2(wbsTreePrivate, contractInfo.getId());
+                    }
+
+                }
             }
         }
         return true;

+ 64 - 48
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -601,18 +601,14 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     @Override
     public List<Map> findProjectAndContractList(Long userId) {
         List<SaveUserInfoByProjectVO2> list = baseMapper.selectListByUserId(userId);
-
         //用户项目合同段角色返回Map
         Map<String, List<SaveUserInfoByProjectVO2>> collect = list.stream().collect(Collectors.groupingBy(SaveUserInfoByProjectVO2::getProjectName));
-        List<Map> collect1 = collect.entrySet().stream().map(entity -> {
-            Map resultMap = new HashMap();
+        return collect.entrySet().stream().map(entity -> {
+            Map<String, Object> resultMap = new HashMap<>();
             resultMap.put("projectName", entity.getKey());
             resultMap.put("dataInfo", entity.getValue());
             return resultMap;
         }).collect(Collectors.toList());
-
-        return collect1;
-
     }
 
     @Override
@@ -703,8 +699,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 //公有同步新增元素表
                 //获取公有wbs树新增的元素表
                 List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
+
+                //获取公有wbs树所有的节点、元素表
                 List<WbsTree> wbsTreeListAll = new ArrayList<>();
-                //获取公有wbs树所有的元素表
                 if (allNodeList != null) {
                     List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
                             .eq(WbsTree::getWbsId, pawDTO.getWbsId())
@@ -713,32 +710,32 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     wbsTreeListAll.addAll(wbsTreeList);
                 }
 
-                //所有表单信息
-                List<WbsTree> wbsTreeListTables = wbsTreeListAll.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
-
                 //所有节点信息
                 //List<WbsTree> wbsTreeListNodes = wbsTreeListAll.stream().filter(f -> f.getType() == 1).collect(Collectors.toList());
 
+                //所有表单信息
+                List<WbsTree> wbsTreeListTables = wbsTreeListAll.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
+
                 //公有元素表的id
                 List<Long> collect1 = wbsTreeListTables.stream().map(WbsTree::getId).collect(Collectors.toList());
                 List<String> collect2 = collect1.stream().map(String::valueOf).collect(Collectors.toList());
 
-                //获取项目私有wbs树下当前所有的元素表
-                List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                //获取项目私有wbs树下所有的节点、元素表
+                List<WbsTreePrivate> wbsTreePrivatesAll = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                         .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
                         .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
-                        .eq(WbsTreePrivate::getType, 2)
+                        .eq(WbsTreePrivate::getStatus, 1)
                 );
 
                 //私有下元素表id
-                List<Long> collect3 = wbsTreePrivates1.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
+                List<WbsTreePrivate> collect = wbsTreePrivatesAll.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
+                List<Long> collect3 = collect.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
                 List<String> collect4 = collect3.stream().map(String::valueOf).collect(Collectors.toList());
 
                 List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
 
-                //同步公有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
-                //wbsTreePrivateService.updateBatchByIds(wbsTreeListAll,pawDTO.getProjectId());
-                updateWbsInfoPrivateAsync(wbsTreeListAll, pawDTO.getProjectId());
+                //修改公有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
+                updateWbsInfoPrivateAsync(wbsTreeListAll, wbsTreePrivatesAll, pawDTO.getProjectId());
 
                 if (diffRent1.size() == 0) {
                     //当wbsTreeIds == "" 时 1.在第一次新增未选择wbs树时  2.同步新增的元素表时
@@ -823,39 +820,38 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
                         .eq(WbsTreePrivate::getPKeyId, pawDTO.getPrimaryKeyId()));
 
-                //获取私有引用项目的wbs树的全部元素表+节点信息
-                List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                //获取私有引用项目的wbs树的所有节点、元素表
+                List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                         .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
                         .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
                         .eq(WbsTreePrivate::getStatus, 1)
                 );
 
-                //私有引用项目的表单信息
-                List<WbsTreePrivate> WbsTreePrivateTables = wbsTreePrivates.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
-
                 //私有引用项目的节点信息
-                //List<WbsTreePrivate> WbsTreePrivateNodes = wbsTreePrivates.stream().filter(f -> f.getType() == 1).collect(Collectors.toList());
+                //List<WbsTreePrivate> WbsTreePrivateNodes = wbsTreePrivateAllOld.stream().filter(f -> f.getType() == 1).collect(Collectors.toList());
+
+                //私有引用项目的表单信息
+                List<WbsTreePrivate> WbsTreePrivateTables = wbsTreePrivateAllOld.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
 
                 //当前新增表单的id
                 List<Long> collect1 = WbsTreePrivateTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
                 List<String> collect2 = collect1.stream().map(String::valueOf).collect(Collectors.toList());
 
-                //获取当前项目私有wbs树下当前所有元素表
-                List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                //获取当前项目私有wbs树下当前所有节点、元素表
+                List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                         .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
                         .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
-                        .eq(WbsTreePrivate::getType, 2)
                 );
 
                 //当前存在的表单的id
-                List<Long> collect3 = wbsTreePrivates1.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
+                List<WbsTreePrivate> wbsTreePrivateNowTypes = wbsTreePrivatesAllNow.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
+                List<Long> collect3 = wbsTreePrivateNowTypes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
                 List<String> collect4 = collect3.stream().map(String::valueOf).collect(Collectors.toList());
 
                 List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
 
-                //同步私有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
-                //wbsTreePrivateService.updateBatchByIds2(wbsTreePrivates, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
-                updateWbsInfoContractAsync(wbsTreePrivates, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
+                //修改私有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
+                updateWbsInfoContractAsync(wbsTreePrivateAllOld, wbsTreePrivatesAllNow, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
 
                 if (diffRent1.size() == 0) {
                     return true;
@@ -1021,7 +1017,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                                 //表
                                 addListData.add(wbsTree);
                             }
-
                         }
                     }
 
@@ -1085,18 +1080,15 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     @Async
-    public boolean updateWbsInfoPrivateAsync(List<WbsTree> wbsTreeListAll, String projectId) {
-        wbsTreePrivateService.updateBatchByIds(wbsTreeListAll, projectId);
-        return true;
+    public boolean updateWbsInfoPrivateAsync(List<WbsTree> wbsTreeListAll, List<WbsTreePrivate> wbsTreePrivatesAll, String projectId) {
+        return wbsTreePrivateService.updateBatchByIds(wbsTreeListAll, wbsTreePrivatesAll, projectId);
     }
 
     @Async
-    public boolean updateWbsInfoContractAsync(List<WbsTreePrivate> wbsTreePrivates, String projectId, String primaryKeyId) {
-        wbsTreePrivateService.updateBatchByIds2(wbsTreePrivates, projectId, primaryKeyId);
-        return true;
+    public boolean updateWbsInfoContractAsync(List<WbsTreePrivate> wbsTreePrivates, List<WbsTreePrivate> wbsTreePrivatesAllNow, String projectId, String primaryKeyId) {
+        return wbsTreePrivateService.updateBatchByIds2(wbsTreePrivates, wbsTreePrivatesAllNow, projectId, primaryKeyId);
     }
 
-
     private WbsTreePrivate getWbsTreePrivate1(WbsTree wbsTree, WbsTreeContractDTO pawDTO) {
         WbsTreePrivate wbsTreePrivate = new WbsTreePrivate();
         //数据初始化
@@ -1127,6 +1119,14 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         wbsTreePrivate.setInitTableName(wbsTree.getInitTableName());
         wbsTreePrivate.setIsLinkTable(wbsTree.getIsLinkTable());
         wbsTreePrivate.setIsExistForm(wbsTree.getIsExistForm());
+
+        wbsTreePrivate.setCreateTime(wbsTree.getCreateTime());
+        wbsTreePrivate.setUpdateTime(wbsTree.getUpdateTime());
+        wbsTreePrivate.setUpdateUser(wbsTree.getUpdateUser());
+        wbsTreePrivate.setCreateUser(wbsTree.getCreateUser());
+        wbsTreePrivate.setCreateDept(wbsTree.getCreateDept());
+
+
         return wbsTreePrivate;
     }
 
@@ -1161,6 +1161,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         wbsTreePrivate.setIsLinkTable(wbsTree.getIsLinkTable());
         wbsTreePrivate.setIsExistForm(wbsTree.getIsExistForm());
         wbsTreePrivate.setHtmlUrl(wbsTree.getHtmlUrl());
+
+        wbsTreePrivate.setCreateTime(wbsTree.getCreateTime());
+        wbsTreePrivate.setUpdateTime(wbsTree.getUpdateTime());
+        wbsTreePrivate.setUpdateUser(wbsTree.getUpdateUser());
+        wbsTreePrivate.setCreateUser(wbsTree.getCreateUser());
+        wbsTreePrivate.setCreateDept(wbsTree.getCreateDept());
+
         return wbsTreePrivate;
     }
 
@@ -1197,6 +1204,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         wbsTreeContract.setExcelId(wbsTree.getExcelId());
         wbsTreeContract.setHtmlUrl(wbsTree.getHtmlUrl());
         wbsTreeContract.setIsBussShow(1);
+
+        wbsTreeContract.setCreateTime(wbsTree.getCreateTime());
+        wbsTreeContract.setUpdateTime(wbsTree.getUpdateTime());
+        wbsTreeContract.setUpdateUser(wbsTree.getUpdateUser());
+        wbsTreeContract.setCreateUser(wbsTree.getCreateUser());
+        wbsTreeContract.setCreateDept(wbsTree.getCreateDept());
+
         if (wbsTree.getType() == 2) {
             wbsTreeContract.setIsTypePrivatePid(wbsTree.getPKeyId());
         }
@@ -1219,9 +1233,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R saveFormElement(FormElementDTO formElementDTO) {
+    public boolean saveFormElement(FormElementDTO formElementDTO) {
         if (formElementDTO.getElementList().size() <= 0) {
-            return R.fail("操作失败,请先添加表单元素");
+            throw new ServiceException("操作失败,请先添加表单元素");
         }
 
         String filedName = "";
@@ -1234,7 +1248,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         }
 
         if (StringUtils.isEmpty(filedName) || StringUtils.isEmpty(filedType) || StringUtils.isEmpty(filedLength)) {
-            return R.fail("操作失败,请完整填写元素参数");
+            throw new ServiceException("操作失败,请完整填写元素参数");
         }
         String deptName = formElementDTO.getDeptName();
         if (deptName.length() > 100 || deptName.length() < 1) {
@@ -1244,7 +1258,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         //初始化表名
         //String realName = getFirstSpell(deptName);
         Long id = SnowFlakeUtil.getId();
-        String newTableName = "m_" + DateUtil.time() + "_" + id.toString();
+        String newTableName = "m_" + DateUtil.time() + "_" + id;
         formElementDTO.setInitTableName(newTableName);
 
         //创建元素表
@@ -1253,14 +1267,16 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         int i = 1;
 
         for (WbsFormElement wbsFormElement : elementList) {
-            if (wbsFormElement.getEType() == 1 && (wbsFormElement.getELength() > 1000 || wbsFormElement.getELength() < 10)) {
-                throw new ServiceException("请输入正确的字符串长度,范围为10-1000");
+            if ((wbsFormElement.getEType() == 1 || wbsFormElement.getEType() == 6 || wbsFormElement.getEType() == 7)
+                    && (wbsFormElement.getELength() > 1000 || wbsFormElement.getELength() < 10)) {
+                throw new ServiceException("请输入正确的长度,该类型范围为10-1000");
             }
-            if (wbsFormElement.getEType() == 2 && (wbsFormElement.getELength() > 255 || wbsFormElement.getELength() < 10)) {
-                throw new ServiceException("请输入正确的整数长度,范围为10-255");
+            if ((wbsFormElement.getEType() == 2 || wbsFormElement.getEType() == 5 )
+                    && (wbsFormElement.getELength() > 255 || wbsFormElement.getELength() < 10)) {
+                throw new ServiceException("请输入正确的长度,该类型范围为10-255");
             }
             if (wbsFormElement.getEType() == 3 && (wbsFormElement.getELength() > 65 || wbsFormElement.getELength() < 10)) {
-                throw new ServiceException("请输入正确的小数长度,范围为10-65");
+                throw new ServiceException("请输入正确的长度,该类型范围为10-65");
             }
 
             //当前元素表中元素对应实体表唯一key值、fId
@@ -1278,7 +1294,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         Boolean b3 = wbsFormElementService.initTable(list, newTableName);
 
         if (b1 && b2 && b3) {
-            return R.data(formElementDTO, "新增表单、元素、初始化实体表成功");
+            return true;
         } else {
             throw new ServiceException("操作失败");
         }

+ 1 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/wrapper/ProjectInfoWrapper.java

@@ -17,10 +17,8 @@ public class ProjectInfoWrapper extends BaseEntityWrapper<ProjectInfo, ProjectIn
 
     @Override
     public ProjectInfoVO entityVO(ProjectInfo projectInfo) {
-        ProjectInfoVO projectInfoVO = Objects.requireNonNull(BeanUtil.copy(projectInfo, ProjectInfoVO.class));
-        //projectInfoVO.setProjectName(projectInfoVO.getProjectAlias());
+        return Objects.requireNonNull(BeanUtil.copy(projectInfo, ProjectInfoVO.class));
 
-        return projectInfoVO;
     }
 
 }