Ver código fonte

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

yangyj 2 anos atrás
pai
commit
437f8e6216
37 arquivos alterados com 959 adições e 1029 exclusões
  1. 11 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/TaskClient.java
  2. 6 0
      blade-service-api/blade-manager-api/pom.xml
  3. 1 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/TextdictInfo.java
  4. 1 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContract.java
  5. 23 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/EVisaConfigClient.java
  6. 52 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TextdictBy345VO.java
  7. 8 6
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  8. 0 21
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  9. 44 0
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/TaskClientImpl.java
  10. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.java
  11. 6 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml
  12. 13 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/IInformationQueryService.java
  13. 26 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java
  14. 2 4
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  15. 38 26
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVisaServiceImpl.java
  16. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java
  17. 126 221
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  18. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java
  19. 103 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TextdictInfoController.java
  20. 40 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/EVisaConfigClientImpl.java
  21. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TextdictInfoMapper.xml
  22. 58 42
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  23. 0 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java
  24. 0 16
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IImageClassificationConfigService.java
  25. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  26. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java
  27. 2 28
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java
  28. 30 213
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  29. 92 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  30. 0 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectContractAreaServiceImpl.java
  31. 0 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectInfoServiceImpl.java
  32. 33 210
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java
  33. 8 38
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  34. 17 177
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java
  35. 37 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/unit/DiffListUtil.java
  36. 174 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/unit/WbsElementUtil.java
  37. 0 1
      blade-service/blade-user/src/main/java/org/springblade/system/user/UserApplication.java

+ 11 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/TaskClient.java

@@ -1,5 +1,6 @@
 package org.springblade.business.feign;
 
+import com.alibaba.fastjson.JSONObject;
 import org.springblade.business.entity.Task;
 import org.springblade.business.entity.TaskParallel;
 import org.springblade.business.vo.TaskApprovalVO;
@@ -26,7 +27,17 @@ public interface TaskClient {
     String QUERY_FORM_DATA_ID = API_PREFIX + "/query-form-data-id";
     String QUERY_BUSINESS_DATA = API_PREFIX + "/query-business-data";
     String QUERY_APPROVAL_USER = API_PREFIX + "/query-approval-user";
+    String QUERY_BUSINESS_TABLE_E_VISA_CONFIG = API_PREFIX + "/query-business-table-E_VISA_CONFIG";
 
+    /**
+     * 获取当前任务绑定的表格
+     */
+    @PostMapping(QUERY_BUSINESS_TABLE_E_VISA_CONFIG)
+    List<JSONObject> queryBusinessTableEVisaConfig(@RequestParam String taskId);
+
+    /**
+     * 获取填报人列表
+     */
     @GetMapping(QUERY_APPROVAL_USER)
     List<TaskParallel> queryApprovalUser(@RequestParam String formDataIds);
 

+ 6 - 0
blade-service-api/blade-manager-api/pom.xml

@@ -12,6 +12,12 @@
     <artifactId>blade-manager-api</artifactId>
     <name>${project.artifactId}</name>
     <version>${bladex.project.version}</version>
+    <dependencies>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+    </dependencies>
     <packaging>jar</packaging>
 
 </project>

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

@@ -39,7 +39,7 @@ import lombok.EqualsAndHashCode;
 	@TableName("m_textdict_info")
 	@ApiModel(value = "Dict对象", description = "Dict对象")
 	public class TextdictInfo implements  Serializable {
-	private static final long serialVersionUID = 1L;
+
 	@ApiModelProperty("主键id")
 	@TableId(
 			value = "id",

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContract.java

@@ -171,7 +171,7 @@ public class WbsTreeContract extends BaseEntity {
     /**
      * 清表Id
      */
-    @ApiModelProperty(value = "清表Id")
+    @ApiModelProperty(name = "excel_id", value = "excel_id")
     private Long excelId;
 
     /**

+ 23 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/EVisaConfigClient.java

@@ -0,0 +1,23 @@
+package org.springblade.manager.feign;
+
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_PREFIX;
+
+@FeignClient(value = APPLICATION_NAME_PREFIX + "manager")
+public interface EVisaConfigClient {
+
+    /**
+     * 接口前缀
+     */
+    String API_PREFIX = "/api/manager/eVisaConfig";
+
+    @PostMapping(API_PREFIX + "/queryEVisaConfigByTableIds")
+    List<JSONObject> queryEVisaConfigByTableIds(@RequestBody List<String> tableIds);
+
+}

+ 52 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TextdictBy345VO.java

@@ -0,0 +1,52 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.manager.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 参数信息表视图实体类
+ *
+ * @author BladeX
+ * @since 2022-06-17
+ */
+@Data
+public class TextdictBy345VO implements Serializable  {
+	private static final long serialVersionUID = 1L;
+
+
+	@ApiModelProperty(value = "tr")
+	private Integer trIndex;
+
+	@ApiModelProperty(value = "td")
+	private Integer tdIndex;
+
+	@ApiModelProperty(value = "文本类型Id")
+	private String textId;
+
+	@ApiModelProperty(value = "表Id")
+	private Long tableId;
+
+	@ApiModelProperty(value = "操作类型")
+	private Integer type;
+
+
+}

+ 8 - 6
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1880,18 +1880,20 @@ public class InformationWriteQueryController extends BladeController {
 //				queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractId(parentId, 1, contractId);
 //			}
 
-			rootTreeNode.forEach(vo -> {
-				if(new Integer("1").equals(contractInfo.getContractType())){
-					if(StringUtils.isEmpty(parentId) || "0".equals(parentId)){
-						vo.setTitle(contractInfo.getContractName());
+			if(StringUtils.isEmpty(parentId) || "0".equals(parentId)){
+				rootTreeNode.forEach(vo -> {
+					if(new Integer("1").equals(contractInfo.getContractType())){
+						if(StringUtils.isEmpty(parentId) || "0".equals(parentId)){
+							vo.setTitle(contractInfo.getContractName());
+						}
 					}
-				}
 
 //				//处理颜色
 //				if(queryDataResult != null && queryDataResult.size() > 0){
 //					this.setNodeColor(vo, queryDataResult, true);
 //				}
-			});
+				});
+			}
 		}
 
 		return rootTreeNode;

+ 0 - 21
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -16,15 +16,12 @@ import org.springblade.business.entity.DefaultConfig;
 import org.springblade.business.entity.TaskParallel;
 import org.springblade.business.service.IDefaultConfigService;
 import org.springblade.business.service.ITaskParallelService;
-import org.springblade.business.utils.FileUtils;
 import org.springblade.business.vo.BatchTaskVO;
 import org.springblade.business.vo.TaskApprovalVO;
 import org.springblade.business.vo.TaskQueryVO;
 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.sms.model.SmsResponse;
 import org.springblade.core.tool.api.R;
@@ -32,7 +29,6 @@ import org.springblade.core.tool.jackson.JsonUtil;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.flow.core.entity.BladeFlow;
 import org.springblade.flow.core.feign.NewFlowClient;
-import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.resource.feign.NewISmsClient;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
@@ -70,8 +66,6 @@ public class TaskController extends BladeController {
 
 	private final NewISmsClient newSmsClient;
 
-	private final NewIOSSClient newIOSSClient;
-
 	private final IDefaultConfigService defaultConfigService;
 
 	/**
@@ -115,21 +109,6 @@ public class TaskController extends BladeController {
 		TaskApprovalVO result = new TaskApprovalVO();
 		result.setFormDataId(formDataId);
 		result.setApprovalType(approvalType);
-//		TaskApprovalVO vo = this.taskService.queryBusinessData(result);
-		//所有文件集合
-//		List<String> urlList = new ArrayList<>();
-//		if(vo != null && vo.getApprovalFileList().size() > 0){
-//			vo.getApprovalFileList().forEach(file -> urlList.add(file.getFileUrl()));
-//			String fileName = SnowFlakeUtil.getId() + ".pdf";
-//			String localImgUrl = "D:/project/file/" + fileName;
-//			//合并方法
-//			FileUtils.mergePdfPublicMethods(urlList, localImgUrl);
-//
-//			BladeFile bladeFile = this.newIOSSClient.uploadFile(fileName, localImgUrl);
-//			if(bladeFile != null && StringUtils.isNotEmpty(bladeFile.getLink())){
-//				result.setApprovalFileList(fileName, bladeFile.getLink());
-//			}
-//		}
 
 		return R.data(this.taskService.queryBusinessData(result));
 	}

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

@@ -1,15 +1,23 @@
 package org.springblade.business.feignClient;
 
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang.StringUtils;
 import org.springblade.business.entity.Task;
 import org.springblade.business.entity.TaskParallel;
 import org.springblade.business.feign.TaskClient;
+import org.springblade.business.service.IInformationQueryService;
+import org.springblade.business.service.ITaskParallelService;
 import org.springblade.business.service.ITaskService;
 import org.springblade.business.vo.TaskApprovalVO;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.core.tool.api.R;
+import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.feign.EVisaConfigClient;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @RestController
@@ -18,6 +26,42 @@ public class TaskClientImpl implements TaskClient {
 
     private final ITaskService taskService;
 
+    private final IInformationQueryService informationQueryService;
+
+    private final EVisaConfigClient eVisaConfigClient;
+
+    private final ITaskParallelService taskParallelService;
+
+    @Override
+    public List<JSONObject> queryBusinessTableEVisaConfig(String taskId) {
+        //获取任务
+        Task task = this.taskService.getById(taskId);
+        if(task == null || StringUtils.isEmpty(task.getFormDataId())){
+            task = this.taskService.getOne(Wrappers.<Task>lambdaQuery().eq(Task::getProcessInstanceId, taskId));
+            if(task == null || StringUtils.isEmpty(task.getFormDataId())){
+                List<TaskParallel> linkList = this.taskParallelService.list(Wrappers.<TaskParallel>lambdaQuery().eq(TaskParallel::getParallelProcessInstanceId, taskId));
+                if(linkList == null || linkList.size() <= 0){
+                    return null;
+                }
+                task = this.taskService.getOne(Wrappers.<Task>lambdaQuery().eq(Task::getProcessInstanceId, linkList.get(0).getProcessInstanceId()));
+                if(task == null || StringUtils.isEmpty(task.getFormDataId())){
+                    return null;
+                }
+            } else {
+                //未找到任务,直接返回
+                return null;
+            }
+        }
+        //存在任务,根据formDataId查询
+        List<String> privatePrimaryKeyIds = this.informationQueryService.queryBusinessTableData(task.getFormDataId());
+        if(privatePrimaryKeyIds != null && privatePrimaryKeyIds.size() > 0){
+            //查询这些表格的电签配置
+            return this.eVisaConfigClient.queryEVisaConfigByTableIds(privatePrimaryKeyIds);
+        }
+
+        return null;
+    }
+
     @Override
     public List<TaskParallel> queryApprovalUser(String formDataIds) {
         return this.taskService.queryApprovalUser(formDataIds);

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

@@ -33,6 +33,8 @@ import org.springblade.manager.vo.WbsTreeContractTreeVOS;
  */
 public interface InformationQueryMapper extends BaseMapper<InformationQuery> {
 
+	List<WbsTreeContractTreeVOS> queryContractTreeSupervision(@Param("contractId") String contractId, @Param("primaryKeyIds") List<String> primaryKeyIds, @Param("parentId") String parentId, @Param("classify") Integer classify);
+
 	List<WbsTreeContractTreeVOS> queryContractTree(@Param("contractId") String contractId, @Param("parentId") String parentId, @Param("classify") Integer classify);
 
 	List<QueryProcessDataVO> queryProcessDataByPrimaryKeyIdAndClassify(@Param("primaryKeyId") String primaryKeyId, @Param("classify") Integer classify);

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

@@ -65,6 +65,10 @@
 
     <resultMap id="intResultMap" type="java.lang.Integer"/>
 
+    <select id="queryContractTreeSupervision" resultMap="queryContractTreeMap">
+
+    </select>
+
     <select id="queryContractTree" resultMap="queryContractTreeMap">
         SELECT
             wtc.p_key_id AS primaryKeyId,
@@ -100,7 +104,7 @@
                 WHEN querys.nodeStatus LIKE CONCAT('%',1,'%') AND (querys.nodeStatus NOT LIKE CONCAT('%',2,'%') AND querys.nodeStatus NOT LIKE CONCAT('%',3,'%') AND querys.nodeStatus NOT LIKE CONCAT('%',4,'%')) THEN 1
                 WHEN querys.nodeStatus LIKE CONCAT('%',1,'%') AND (querys.nodeStatus LIKE CONCAT('%',2,'%') OR querys.nodeStatus LIKE CONCAT('%',3,'%') OR querys.nodeStatus LIKE CONCAT('%',4,'%')) THEN 2
                 WHEN querys.nodeStatus NOT LIKE CONCAT('%',1,'%') AND querys.nodeStatus LIKE CONCAT('%',4,'%') AND (querys.nodeStatus LIKE CONCAT('%',2,'%') OR querys.nodeStatus LIKE CONCAT('%',3,'%')) THEN 4
-                ELSE 2 END AS nodeStatus
+                ELSE querys.nodeStatus END AS nodeStatus
             FROM
             (
                 SELECT
@@ -108,6 +112,7 @@
                     group_concat(
                                 CASE
                                 WHEN iq.status is null THEN 1
+                                WHEN iq.status = 0 THEN 2
                                 WHEN iq.status = 1 THEN 3
                                 WHEN iq.status = 2 THEN 4
                                 ELSE 2 END

+ 13 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/IInformationQueryService.java

@@ -22,7 +22,9 @@ import org.springblade.business.vo.InformationQueryVO;
 import org.springblade.business.vo.QueryProcessDataVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -35,7 +37,17 @@ import java.util.List;
 public interface IInformationQueryService extends BaseService<InformationQuery> {
 
 	/**
-	 * 获取合同段树
+	 * 获取表格信息
+	 */
+	List<String> queryBusinessTableData(String formDataId);
+
+	/**
+	 * 获取合同段树(监理方)
+	 */
+	List<WbsTreeContractTreeVOS> queryContractTreeSupervision(String contractId, List<String> primaryKeyIds, String parentId, Integer classify);
+
+	/**
+	 * 获取合同段树(施工方)
 	 */
 	List<WbsTreeContractTreeVOS> queryContractTree(String contractId, String parentId, Integer classify);
 

+ 26 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -28,6 +28,7 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  *  服务实现类
@@ -39,7 +40,6 @@ import java.util.*;
 @AllArgsConstructor
 public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQueryMapper, InformationQuery> implements IInformationQueryService {
 
-
 	private final WbsTreeContractClient wbsTreeContractClient;
 
 	private final IUserClient userClient;
@@ -48,6 +48,31 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 
 	private final ITaskParallelService taskParallelService;
 
+	@Override
+	public List<String> queryBusinessTableData(String formDataId) {
+		//获取具体业务数据
+		InformationQuery query = this.getById(formDataId);
+
+		//查询这个业务数据绑定的表格,需要区分监理和施工
+		WbsTreeContract tree = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(query.getWbsId());
+		List<WbsTreeContract> tableList = this.wbsTreeContractClient.queryChildByParentId(tree, "queryTable", String.valueOf(query.getClassify()));
+		if(tableList != null && tableList.size() > 0){
+			//删除掉无法溯源的数据
+			tableList.removeIf(node -> node.getIsTypePrivatePid() == null || node.getIsTypePrivatePid() <= 0 || StringUtils.isEmpty(node.getIsTypePrivatePid().toString()));
+
+			List<Long> privatePIdList = tableList.stream().map(WbsTreeContract::getIsTypePrivatePid).distinct().collect(Collectors.toList());
+
+			return JSONArray.parseArray(JSONObject.toJSONString(privatePIdList), String.class);
+		}
+
+		return null;
+	}
+
+	@Override
+	public List<WbsTreeContractTreeVOS> queryContractTreeSupervision(String contractId, List<String> primaryKeyIds, String parentId, Integer classify) {
+		return this.baseMapper.queryContractTree(contractId, parentId, classify);
+	}
+
 	@Override
 	public List<WbsTreeContractTreeVOS> queryContractTree(String contractId, String parentId, Integer classify) {
 		return this.baseMapper.queryContractTree(contractId, parentId, classify);

+ 2 - 4
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -1,4 +1,4 @@
- package org.springblade.business.service.impl;
+package org.springblade.business.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -10,7 +10,6 @@ import org.apache.commons.lang.time.DateUtils;
 import org.springblade.business.entity.*;
 import org.springblade.business.mapper.TaskMapper;
 import org.springblade.business.service.*;
-import org.springblade.business.utils.FileUtils;
 import org.springblade.business.vo.TaskApprovalVO;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.common.utils.SnowFlakeUtil;
@@ -40,7 +39,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
  /**
  * 任务审核主表 服务实现类
@@ -120,7 +118,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 List<WbsTreeContract> tableData = this.wbsTreeContractClient.queryProcessSubmitBusinessDataByPrimaKeyIdAndClassify(query.getWbsId().toString(), query.getClassify().toString());
                 if(tableData != null && tableData.size() > 0){
                     //设置数据
-                    List<String> pdfUrls = tableData.stream().map(WbsTreeContract::getPdfUrl).distinct().collect(Collectors.toList());
+//                    List<String> pdfUrls = tableData.stream().map(WbsTreeContract::getPdfUrl).distinct().collect(Collectors.toList());
                     //需要重新合并PDF
 //                    FileUtils.mergePdfPublicMethods();
 

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

@@ -194,12 +194,19 @@ public class EVisaServiceImpl implements EVisaService {
 
     @Override
     public String eVisa(EVisaTaskApprovalVO task) {
-        if(true){
-            return SUCCESS;
-        }
+        String resultMessage = ERROR;
+
         //todo 这里应当是配置限制参数,初版暂时写死
         int batch = 20;
 
+        //获取任务对应表格的电签配置
+        List<JSONObject> eVisaConfigList = this.taskClient.queryBusinessTableEVisaConfig(task.getParallelProcessInstanceId());
+
+        if(eVisaConfigList == null || eVisaConfigList.size() == 0){
+            //没有电签配置,默认当前任务为不签字审批,返回成功
+            return SUCCESS;
+        }
+
         //首先获取当前用户的证书信息
         List<SignPfxFile> userPfxList = this.signPfxClient.querySignPfxByUserIdOrContractId(AuthUtil.getUserId().toString(), "");
         if(userPfxList == null || userPfxList.size() <= 0){
@@ -217,6 +224,7 @@ public class EVisaServiceImpl implements EVisaService {
         //上锁
         if(DistributedRedisLock.acquire(AuthUtil.getUserId().toString(), batch)){
             try{
+
                 //获取需要签章的数据
                 List<TaskApprovalVO.ApprovalFile> files = taskFile.getApprovalFileList();
                 for(TaskApprovalVO.ApprovalFile file : files){
@@ -227,24 +235,24 @@ public class EVisaServiceImpl implements EVisaService {
                     //准备签章策略
                     List<SealStrategyVO> sealStrategyVOS = new ArrayList<>();
                     for(int i = 0; i <page; i ++){
-                        //设置签章策略
-                        SealStrategyVO vo = new SealStrategyVO();
-                        vo.setSealCode(EVisaConstant.SIGN_SEAL_CODE + AuthUtil.getUserId());
-                        vo.setSealPassword(AuthUtil.getUserId().toString().substring(0, EVisaConstant.USER_ID_SUB));
-                        vo.setSealPerson(AuthUtil.getNickName());
-                        //设置签字文件
-                        vo.setImageUrl(userPfxList.get(0).getSignatureFileUrl());
-                        vo.setSealType("3");
-
-                        //todo ====================== 暂时缺少关键信息 =====================
-//                        vo.setKeyword("监理");
-//                        vo.setLx("10");
-//                        vo.setLy("0");
-                        //todo ====================== 暂时缺少关键信息 =====================
-
-                        //设置页
-                        vo.setPage(( i + 1) + "");
-                        sealStrategyVOS.add(vo);
+                        for(JSONObject eVisaConfig : eVisaConfigList){
+                            //设置签章策略
+                            SealStrategyVO vo = new SealStrategyVO();
+                            vo.setSealCode(EVisaConstant.SIGN_SEAL_CODE + AuthUtil.getUserId());
+                            vo.setSealPassword(AuthUtil.getUserId().toString().substring(0, EVisaConstant.USER_ID_SUB));
+                            vo.setSealPerson(AuthUtil.getNickName());
+                            //设置签字文件
+                            vo.setImageUrl(userPfxList.get(0).getSignatureFileUrl());
+                            vo.setSealType("3");
+
+                            vo.setKeyword(eVisaConfig.getString("KEY"));
+                            vo.setLx(eVisaConfig.getString("X"));
+                            vo.setLy(eVisaConfig.getString("Y"));
+
+                            //设置页
+                            vo.setPage(( i + 1) + "");
+                            sealStrategyVOS.add(vo);
+                        }
                     }
                     SealPdfVO pdfVO = new SealPdfVO();
                     pdfVO.setStrategyVoList(sealStrategyVOS);
@@ -258,22 +266,26 @@ public class EVisaServiceImpl implements EVisaService {
                         //重新上传
                         BladeFile bladeFile = this.newIOSSClient.uploadFileByInputStream(newFiles);
                         if(bladeFile != null){
-                            return SUCCESS + "@@@@" + bladeFile.getLink();
+                            resultMessage = SUCCESS + "@@@@" + bladeFile.getLink();
                         } else {
-                            return ERROR;
+                            resultMessage = ERROR;
                         }
                     } else {
-                        return ERROR;
+                        resultMessage = ERROR;
                     }
 
                 }
+
+
             }catch (Exception e){
                 e.printStackTrace();
-                return ERROR;
             }
         }
 
-        return ERROR;
+        //释放锁
+        DistributedRedisLock.release(AuthUtil.getUserId().toString());
+
+        return resultMessage;
     }
 
     /**

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

@@ -144,7 +144,7 @@ public class ContractInfoController extends BladeController {
     @ApiOperationSupport(order = 6)
     @ApiOperation(value = "新增或修改", notes = "传入contractInfo")
     public R submit(@Valid @RequestBody ContractInfoVO contractInfo) {
-        boolean b = contractInfoService.saveAndUpdateContract2(contractInfo);
+        boolean b = contractInfoService.saveAndUpdateContract(contractInfo);
         if (b) {
             return R.data(contractInfo, "操作成功");
         }
@@ -406,7 +406,7 @@ public class ContractInfoController extends BladeController {
     @ApiOperationSupport(order = 17)
     @ApiOperation(value = "保存或修改分配合同段wbs树", notes = "传入WbsTreeContractDTO")
     public R submitWbsTreeInContract(@RequestBody WbsTreeContractDTO wbsTreeContractDTO) {
-        boolean b = wbsTreeContractService.submitWbsTreeInContract1(wbsTreeContractDTO);
+        boolean b = wbsTreeContractService.submitWbsTreeInContract(wbsTreeContractDTO);
         if (b) {
             return R.success("关联合同段树成功");
         }

+ 126 - 221
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -3,6 +3,7 @@ package org.springblade.manager.controller;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -12,11 +13,11 @@ import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider;
 import com.itextpdf.io.font.FontProgram;
 import com.itextpdf.io.font.FontProgramFactory;
 import com.itextpdf.layout.font.FontProvider;
-import com.spire.xls.ExcelPicture;
-import com.spire.xls.ExcelVersion;
-import com.spire.xls.Workbook;
-import com.spire.xls.Worksheet;
+import com.spire.xls.*;
+import com.spire.xls.core.IStyle;
 import com.spire.xls.core.spreadsheet.HTMLOptions;
+import com.spire.xls.core.spreadsheet.pivottables.PivotStyle;
+import com.spire.xls.core.spreadsheet.shapes.XlsTextBoxShape;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
@@ -25,8 +26,6 @@ import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 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;
@@ -59,16 +58,21 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.imageio.ImageIO;
 import javax.validation.Valid;
+import java.awt.*;
 import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.*;
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
+import static com.baomidou.mybatisplus.core.toolkit.Wrappers.lambdaQuery;
+import static com.baomidou.mybatisplus.core.toolkit.Wrappers.query;
+
 
 /**
  * 清表基础数据表 控制器
@@ -96,9 +100,6 @@ public class ExcelTabController extends BladeController {
     // 私有项目wbs
     private final IWbsTreePrivateService wbsTreePrivateService;
 
-    // 清表表格解析信息
-    //private final ILinkdataInfoService linkdataInfoService;
-
     // 元素信息表-
     private final IWbsFormElementService wbsFormElementService;
 
@@ -109,8 +110,6 @@ public class ExcelTabController extends BladeController {
 
     private final JdbcTemplate jdbcTemplate;
 
-    //客户端资料查询接口
-    private final InformationQueryClient informationQueryClient;
 
     // 表单附件信息
     private final ITableFileService tableFileService;
@@ -118,8 +117,8 @@ public class ExcelTabController extends BladeController {
     // pdf转换
     private final CommonFileClient commonFileClient;
 
-
-    private final IWbsParamService wbsParamService;
+    // 表单字典信息表
+    private final ITextdictInfoService textdictInfoService;
 
     /**
      * 详情
@@ -402,7 +401,6 @@ public class ExcelTabController extends BladeController {
                     updateWrapper.set("excel_id", excelTab.getId());
 
                     wbsTreePrivateService.update(updateWrapper);
-
                 }
             }
         }
@@ -434,7 +432,7 @@ public class ExcelTabController extends BladeController {
     })
     public R<List<ExceTabTreVO>> saveLinkeTab(Long exceTabId, Long tabId) throws IOException {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-        // 查询私有项目信息
+        // 关联 私有项目 wbs 数据信息
         WbsTreePrivate wbsTree = new WbsTreePrivate();
         wbsTree.setPKeyId(tabId);
         WbsTreePrivate aPrivate = wbsTreePrivateService.getOne(Condition.getQueryWrapper(wbsTree));
@@ -516,9 +514,17 @@ public class ExcelTabController extends BladeController {
         FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
 
 
-        //日志表单关联解决
+        //由于日志无法拿到基本节点,将 关联html的id 放入在父节点excelId 处理
         if (aPrivate.getWbsType().equals("4")) {
-            updateWrapper.set("excel_id", aPrivate.getPKeyId());
+            WbsTreePrivate wbsTreePrivate = wbsTreePrivateService.getBaseMapper().selectOne(Wrappers.<WbsTreePrivate>query().lambda()
+                    .eq(WbsTreePrivate::getId, aPrivate.getParentId())  // 获取父节点Id
+                    .eq(WbsTreePrivate::getWbsType, "4")  // 内型为4
+                    .eq(WbsTreePrivate::getProjectId, aPrivate.getProjectId()));  // 项目Id
+
+            UpdateWrapper<WbsTreePrivate> pupdate = new UpdateWrapper<>();
+            pupdate.in("p_key_id", wbsTreePrivate.getPKeyId());
+            pupdate.set("excel_id", aPrivate.getPKeyId());
+            wbsTreePrivateService.update(pupdate);
         }
         wbsTreePrivateService.update(updateWrapper);
         //关联项目下所有的合同段
@@ -630,158 +636,6 @@ public class ExcelTabController extends BladeController {
     }
 
 
-    /**
-     * 保存用户填报数据接口
-     */
-    @PostMapping("/save_buss_data_bak")
-    @ApiOperationSupport(order = 13)
-    @ApiOperation(value = "填报页面数据保存", notes = "填报页面数据保存")
-    public R<String> saveBussData(@Valid @RequestBody JSONObject dataInfo, BladeUser bladeUser) throws IOException {
-
-        JSONArray dataArray = new JSONArray();
-        if (dataInfo.containsKey("dataInfo")) { // 节点保存
-            JSONObject jsonObject = dataInfo.getJSONObject("dataInfo");
-            dataArray = jsonObject.getJSONArray("orderList");
-        } else { // 单个保存
-            dataArray.add(dataInfo);
-        }
-
-        for (int m = 0; m < dataArray.size(); m++) {
-            JSONObject dataInfo2 = dataArray.getJSONObject(m);
-            //
-            String contractId = dataInfo2.getString("contractId");
-            String pkeyId = dataInfo2.getString("pkeyId");
-            String projectId = dataInfo2.getString("projectId");
-            //huangjn 填报的类型,施工或监理
-            String classify = dataInfo2.getString("classify");
-
-            //huangjn 填报的类型,施工或监理
-            // 去掉
-            dataInfo2.remove("contractId");
-            dataInfo2.remove("pkeyId");
-            dataInfo2.remove("p_key_id");
-            dataInfo2.remove("projectId");
-            dataInfo2.remove("classify");
-            dataInfo2.remove("pickerKey");
-            dataInfo2.remove("id");
-            dataInfo2.remove("");
-
-            // 计算数据
-            Map<String, String> dataMap = new HashMap<>();
-            for (String k : dataInfo2.keySet()) {
-                if (k.indexOf("__") >= 0) {
-                    String key = k.split("__")[0];
-                    if (dataMap.containsKey(key)) {
-                        dataMap.put(key, dataMap.get(key) + "," + k);
-                    } else {
-                        dataMap.put(key, k);
-                    }
-                }
-            }
-
-            Map<String, String> dataMap2 = new HashMap<>();
-
-
-            // 字段组合
-            for (String k : dataMap.keySet()) {
-                if (dataMap.get(k).indexOf(",") >= 0 && dataMap.get(k).indexOf("000Z") < 0) {
-                    String[] ziduan = dataMap.get(k).split(",");
-                    String temp = "";
-                    for (int i = 0; i < ziduan.length - 1; i++) {
-                        for (int j = 0; j < ziduan.length - i - 1; j++) {
-                            Integer tr = Integer.parseInt((ziduan[j].split("__")[1]).split("_")[0]);
-                            Integer td = Integer.parseInt(ziduan[j].split("__")[1].split("_")[1]);
-
-                            Integer tr_1 = Integer.parseInt(ziduan[j + 1].split("__")[1].split("_")[0]);
-                            Integer td_1 = Integer.parseInt(ziduan[j + 1].split("__")[1].split("_")[1]);
-
-                            if (tr > tr_1 && td == td_1) { //纵向排序
-                                temp = ziduan[j];
-                                ziduan[j] = ziduan[j + 1];
-                                ziduan[j + 1] = temp;
-                            }
-                        }
-                    }
-
-                    String lastStr = dataInfo2.getString(ziduan[0]) + "__" + ziduan[0].split("__")[1];
-                    for (int i = 1; i < ziduan.length; i++) {
-                        String keyData = dataInfo2.getString(ziduan[i]);
-                        if (!keyData.equals("")) {
-                            lastStr += "," + dataInfo2.getString(ziduan[i]) + "__" + ziduan[i].split("__")[1];
-                        }
-
-                    }
-                    dataMap2.put(k, lastStr);
-                } else {
-                    String dataVal = dataInfo2.getString(dataMap.get(k));
-                    if (!dataVal.equals("") || !dataVal.equals("[]")) {
-                        System.out.println(k + "__" + dataMap.get(k));
-                        dataMap2.put(k, dataVal + "__" + dataMap.get(k).split("__")[1]);
-                    }
-                }
-            }
-
-            dataMap2.put("p_key_id", pkeyId);
-
-            WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                    .eq(WbsTreeContract::getPKeyId, pkeyId));
-            if (wbsTreeContract == null) {
-                continue;
-            }
-
-            String tabName = wbsTreeContract.getInitTableName();
-
-            // 判读修改还是 添加
-            // 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()){ //插入
-            sqlInfo = "INSERT INTO " + tabName + " ( ";
-            String keyStr = "id,";
-            String valStr = SnowFlakeUtil.getId() + ",";
-            for (String keys : dataMap2.keySet()) {
-                keyStr += keys + ",";
-                valStr += "'" + dataMap2.get(keys) + "',";
-            }
-            keyStr = keyStr.substring(0, keyStr.lastIndexOf(","));
-            valStr = valStr.substring(0, valStr.lastIndexOf(","));
-            sqlInfo = sqlInfo + keyStr + ") VALUES (" + valStr + ")";
-
-
-            WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                    .eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId, contractId));
-
-            //处理文件提名
-            String fileName = this.wbsParamService.createFileTitle(Func.isNotEmpty(wbsTreeContractByP.getOldId())? Long.valueOf(wbsTreeContractByP.getOldId()) :wbsTreeContractByP.getId(), Long.parseLong(wbsTreeContractByP.getContractId()));
-            fileName = StringUtils.isNotEmpty(fileName) ? fileName : "缺少文件提名配置";
-
-            //huangjn 保存成功后调用生成资料查询列表数据
-            this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId() + "", "业务ID(主要将来给首件使用)", 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);
-            updateWrapper.set("is_tab_pdf", 2);
-            wbsTreeContractService.update(updateWrapper);
-
-            jdbcTemplate.execute(sqlInfo);
-            // this.getBussPdfInfo(Long.parseLong(pkeyId));
-        }
-        return R.success("1");
-    }
-
     // 上传解析 html
     public void expailHtmlInfo(String thmlUrl, Long excelId) throws FileNotFoundException {
 
@@ -807,7 +661,6 @@ public class ExcelTabController extends BladeController {
 
         // 获取图片信息
         Elements imgs = doc.select("img");
-        System.out.println(imgs.get(0));
         int imgIndex = 0;
 
 
@@ -816,7 +669,7 @@ public class ExcelTabController extends BladeController {
 
         // 获取总行列数
         int maxCol = doc.select("Col").size();
-        String[] rowData = new String[trs.size() + 1];
+        String[] rowData = new String[trs.size() + 5]; //本来加一的 害怕出现特殊情况 故意 加 5
 
         // 行的状态
         boolean index_state = false;
@@ -1010,10 +863,11 @@ public class ExcelTabController extends BladeController {
                             colTitle.add(exctabCell);
                             data.attr("title", "签字时间");
 
-                        }else if(trHtml.indexOf("Important")>=0){ // 图片处理方式
-                            data.empty().append(imgs.get(imgIndex)+"");
-                            imgIndex = imgIndex+1;
-                        } else {
+                        }//else if(trHtml.indexOf("Important")>=0){ // 图片处理方式
+                           // data.empty().append(imgs.get(imgIndex)+"");
+                          //  imgIndex = imgIndex+1;
+                       // }
+                        else {
                             if (index_state) {
                                 if (rowspan >= 1) {
                                     data.empty().append("<el-input type='textarea'  @contextmenu.prevent.native='RightClick(" + parm + ")' trIndex=" + i + " tdIndex=" + j + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%;'   :rows=" + rowspan * 2 + " placeholder=''> </el-input>");
@@ -1211,6 +1065,14 @@ public class ExcelTabController extends BladeController {
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
 
+        QueryWrapper<TextdictInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("type", 4);
+        queryWrapper.eq("tab_id", wbsTreeContract.getIsTypePrivatePid());
+
+        // 获取默认值
+        final List<TextdictInfo> textdictInfos = textdictInfoService.getBaseMapper().selectList(queryWrapper);
+
+
         if (wbsTreeContract == null) {
             return R.data(reData);
         }
@@ -1275,6 +1137,13 @@ public class ExcelTabController extends BladeController {
             }
         }
 
+        // 移除Id 和 p_key_id
+        reData.remove("id");
+        reData.remove("p_key_id");
+        reData.remove("classify");
+        reData.remove("contractId");
+        reData.remove("pkeyId");
+        reData.remove("projectId");
         return R.data(reData);
     }
 
@@ -1292,6 +1161,8 @@ public class ExcelTabController extends BladeController {
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
 
+
+
         if (wbsTreeContract == null) {
             return R.fail("该数据下无此节点!");
         }
@@ -1322,72 +1193,103 @@ public class ExcelTabController extends BladeController {
 
 
         // 数据不为空 &&
-        if (ObjectUtil.isNotEmpty(DataInfo) && StringUtils.isNotEmpty(wbsTreeContract.getHtmlUrl())) {
+        if (StringUtils.isNotEmpty(wbsTreeContract.getHtmlUrl())) {
             File htmlFile = ResourceUtil.getFile(wbsTreeContract.getHtmlUrl());
             if (htmlFile.exists()) {
-
                 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("__");
-                        String[] xy = DataVal[1].split("_");
-                        Element data = trs.get(Integer.parseInt(xy[0])).select("td").get(Integer.parseInt(xy[1]));
-                        if (data.html().indexOf("x1") >= 0 && data.html().indexOf("y1") >= 0) {
-                            int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
-                            if (x1 == 0) {
-                                x1 = 1;
-                            }
-                            int y1 = Integer.parseInt(data.children().get(0).attr("y1"));
-                            String myData = DataInfo.get(val) + "";
-                            if (myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) {
-                                if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
-                                    myData = myData.replace("[", "").replace("]", "");
-                                    String[] dataVal = myData.split(",");
-                                    String Start_dataStr[] = dataVal[0].split("T")[0].split("-");
-                                    String StartDate = StringUtil.format("{}年{}月{}日", new Object[]{Start_dataStr[0], Start_dataStr[1], Integer.parseInt(Start_dataStr[2]) + 1});
-
-                                    String end_dataStr[] = dataVal[1].split("T")[0].split("-");
-                                    String endDate = StringUtil.format("{}年{}月{}日", new Object[]{end_dataStr[0], end_dataStr[1], Integer.parseInt(end_dataStr[2]) + 1});
-
-                                    if (StartDate.equals(endDate)) {
-                                        myData = StartDate;
+                if(ObjectUtil.isNotEmpty(DataInfo)) {
+                    for (String val : DataInfo.keySet()) {
+                        if (val.indexOf("__") >= 0) {
+                            String DataVal[] = val.split("__");
+                            String[] xy = DataVal[1].split("_");
+                            Element data = trs.get(Integer.parseInt(xy[0])).select("td").get(Integer.parseInt(xy[1]));
+                            if (data.html().indexOf("x1") >= 0 && data.html().indexOf("y1") >= 0) {
+                                int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
+                                if (x1 == 0) {
+                                    x1 = 1;
+                                }
+                                int y1 = Integer.parseInt(data.children().get(0).attr("y1"));
+                                String myData = DataInfo.get(val) + "";
+                                if (myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) {
+                                    if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
+                                        myData = myData.replace("[", "").replace("]", "");
+                                        String[] dataVal = myData.split(",");
+                                        String Start_dataStr[] = dataVal[0].split("T")[0].split("-");
+                                        String StartDate = StringUtil.format("{}年{}月{}日", new Object[]{Start_dataStr[0], Start_dataStr[1], Integer.parseInt(Start_dataStr[2]) + 1});
+
+                                        String end_dataStr[] = dataVal[1].split("T")[0].split("-");
+                                        String endDate = StringUtil.format("{}年{}月{}日", new Object[]{end_dataStr[0], end_dataStr[1], Integer.parseInt(end_dataStr[2]) + 1});
+
+                                        if (StartDate.equals(endDate)) {
+                                            myData = StartDate;
+                                        } else {
+                                            myData = StartDate + "-" + endDate;
+                                        }
                                     } else {
-                                        myData = StartDate + "-" + endDate;
+                                        String dataStr[] = myData.split("T")[0].split("-");
+                                        myData = StringUtil.format("{}年{}月{}日", new Object[]{dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1});
                                     }
-                                } else {
-                                    String dataStr[] = myData.split("T")[0].split("-");
-                                    myData = StringUtil.format("{}年{}月{}日", new Object[]{dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1});
                                 }
-                            }
-                            //https:bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
-                            if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
-                                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", ""));
+                                //https:bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
+                                if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
+                                    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);
+                                    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 {
-                                sheet.getCellRange(y1, x1).setText(myData);
+                                } else {
+                                    final CellRange cellRange = sheet.getCellRange(y1, x1);
+                                    cellRange.setText(myData);
+                                    cellRange.getCellStyle().setHorizontalAlignment(HorizontalAlignType.Left);
+                                }
                             }
                         }
                     }
                 }
+
+                // 组装电签设置
+                QueryWrapper<TextdictInfo> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("type", 2);
+                queryWrapper.eq("tab_id", wbsTreeContract.getIsTypePrivatePid());
+
+                final List<TextdictInfo> textdictInfos = textdictInfoService.getBaseMapper().selectList(queryWrapper);
+                if(textdictInfos!=null && !textdictInfos.isEmpty()){
+                    textdictInfos.forEach(e->{
+                        String key = e.getColKey();
+                        String keys[] = key.split("__");
+                        String[] trtd = keys[1].split("_");
+                        Element data = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
+                        int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
+                        if (x1 == 0) {
+                            x1 = 1;
+                        }
+                        int y1 = Integer.parseInt(data.children().get(0).attr("y1"));
+
+                        final CellRange cellRange = sheet.getCellRange(y1, x1);
+                        cellRange.setText(e.getId()+"");
+                        cellRange.getCellStyle().getFont().setColor(Color.white);
+
+                    });
+                }
             }
         }
 
+
+
+
         sheet.saveToPdf(pdfPath);
 
         BladeFile bladeFile = newIOSSClient.uploadFile(pkeyId + ".pdf", pdfPath);
@@ -1740,4 +1642,7 @@ public class ExcelTabController extends BladeController {
        // expailHtmlInfo(thmlUrl, detail.getId());
         return R.success("上传成功");
     }
+
+
+
 }

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

@@ -214,7 +214,7 @@ public class ProjectInfoController extends BladeController {
     @ApiOperation(value = "保存或修改分配项目级wbs树", notes = "传入WbsTreeContractDTO")
     public R submitWbsTreeInProject(@RequestBody WbsTreeContractDTO pawDTO) {
         if (pawDTO.getWbsType() == 1) {
-            if (wbsTreeService.submitWbsTreeInProject1(pawDTO)) {
+            if (wbsTreeService.submitWbsTreeInProject(pawDTO)) {
                 return R.success("关联质检项目级树成功");
             }
         } else if (pawDTO.getWbsType() == 2) {

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

@@ -39,6 +39,7 @@ 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.TextdictBy345VO;
 import org.springblade.manager.vo.TextdictDataInfoVO;
 import org.springblade.manager.vo.TextdictInfo_vo;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -214,7 +215,8 @@ public class TextdictInfoController extends BladeController {
 			}
 			radioText += "</template>";
 			element.empty().append(radioText);
-			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
+			element.children().get(0).attr("v-on:click","getInformation("+oncklickText+")");
+			element.attr("tabindex","-1");
 		}else if(textdictInfo.getTextId().equals("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+">";
@@ -226,16 +228,21 @@ public class TextdictInfoController extends BladeController {
 			checkbox += "</template>";
 			element.empty().append(checkbox);
 			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
+			element.attr("tabindex","-1");
 		}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")){ // 时间段
 
+		}else if(textdictInfo.getTextId().equals("daterange")){ // 时间段
 			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+"')");
 		}else if(textdictInfo.getTextId().equals("img")){
-			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.empty().append("<el-upload :disabled='formUploadLoading' v-loading='formUploadLoading' element-loading-text='上传中...' :on-progress='uploadprogress' @exceed='formUploadExceed' :on-error='formUploadError' 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+"  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> <div v-if="+vmode+" class='hc-table-form-del' >" +
+					"        <el-button type='danger'"+ " plain @click.stop=delTableFormFile('"+keyname+"')>删除当前文件</el-button> " +
+					"    </div></el-upload>");
+
 			element.children().get(0).attr("@success","formUploadSuccess($event,'"+keyname+"')");
 			element.attr("@focus","getInformation("+oncklickText+")");
 			element.attr("tabindex","-1");
@@ -303,9 +310,100 @@ public class TextdictInfoController extends BladeController {
 			textdictInfo.setPyzbx(jsonObject.getDouble("pyzbx"));
 			textdictInfo.setPyzby(jsonObject.getDouble("pyzby"));
 			textdictInfo.setIsDeleted(0);
-			textdictInfos.add(textdictInfo);
+			textdictInfoService.saveOrUpdate(textdictInfo);
+			element.attr("dqId",textdictInfo.getId()+"");
+			element.children().get(0).attr("readonly");
+		}
+
+		// 写入 excel
+		File writefile = new File(wbsTreePrivate.getHtmlUrl());
+		FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
+		return R.success("操作成功");
+	}
+
+	/**
+	 *保存电签
+	 */
+	@PostMapping("/save_defaulVal")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "保存默认值", notes = "保存默认值")
+	public R<String> saveDefaulVal(@Valid @RequestBody TextdictBy345VO textdictInfo) throws IOException {
+		WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.getByPKeyId(textdictInfo.getTableId());
+
+		// 读取html页面信息
+		File file1 = ResourceUtil.getFile(wbsTreePrivate.getHtmlUrl());
+		String htmlString =  IoUtil.readToString(new FileInputStream(file1));
+		// 样式集合
+		Document doc = Jsoup.parse(htmlString);
+		//解析
+		Element table = doc.select("table").first();
+		Elements trs = table.select("tr");
+		Element element = trs.get(textdictInfo.getTrIndex()).select("td").get(textdictInfo.getTdIndex());
+
+		//
+		String placeholder = "";
+		String id = element.children().get(0).attr("keyname");
+		if(element.html().indexOf("el-tooltip")>=0){
+			placeholder = element.children().get(0).children().get(0).attr("placeholder").replaceAll("[^(\u4E00-\u9FA5_)]", "");
+			id = element.children().get(0).children().get(0).attr("keyname");
+		}else{
+			placeholder = element.children().get(0).attr("placeholder").replaceAll("[^(\u4E00-\u9FA5_)]", "");
+			id = element.children().get(0).attr("keyname");
 		}
-		textdictInfoService.saveOrUpdateBatch(textdictInfos);
+
+		TextdictInfo textdictBean = new TextdictInfo();
+		textdictBean.setIsDeleted(0);
+		textdictBean.setTabId(textdictInfo.getTableId()+"");
+
+		textdictBean.setColKey(id);
+		textdictBean.setColName(placeholder);
+		textdictBean.setSigRoleName(textdictInfo.getTextId());
+
+		if(textdictInfo.getType()==4){ //默认值
+			textdictBean.setType(4);
+			textdictBean.setName("编辑默认值");
+		}
+		if(textdictInfo.getType()==5){ // 提示语
+			textdictBean.setType(5);
+			textdictBean.setName("提示信息");
+			String lastHmtl ="";
+			if(element.html().indexOf("el-tooltip")>=0){
+				element.children().attr("content",textdictInfo.getTextId());
+			}else{
+				lastHmtl = " <el-tooltip content='"+textdictInfo.getTextId()+"' placement='top' effect='customized'>"+element.html()+"</el-tooltip>";
+				element.empty().append(lastHmtl);
+			}
+			File writefile = new File(wbsTreePrivate.getHtmlUrl());
+			FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
+		}
+
+		// 删除
+		textdictInfoService.getBaseMapper().delete(Wrappers.<TextdictInfo>query().lambda().eq(TextdictInfo::getTabId, textdictInfo.getTableId())
+				.eq(TextdictInfo::getType,textdictInfo.getType()).eq(TextdictInfo::getColKey,id));
+
+		textdictInfoService.saveOrUpdate(textdictBean);
 		return R.success("操作成功");
 	}
+
+/*	public static void main(String[] args) throws FileNotFoundException {
+		File file1 = ResourceUtil.getFile("/Users/hongchuangyanfa/Desktop/privateUrl/1567789917445029888.html");
+		String htmlString =  IoUtil.readToString(new FileInputStream(file1));
+		// 样式集合
+		Document doc = Jsoup.parse(htmlString);
+		//解析
+		Element table = doc.select("table").first();
+		Elements trs = table.select("tr");
+		Element element = trs.get(3).select("td").get(1);
+		System.out.println(element.html());
+		if(element.html().indexOf("el-tooltip")>=0){
+			element.children().attr("content","111");
+		}
+
+		String lastHmtl = " <el-tooltip content='Bottom center' effect='customized'>"+element.html()+"</el-tooltip>";
+		element.empty().append(lastHmtl);
+		File writefile = new File("/Users/hongchuangyanfa/Desktop/privateUrl/1567789917445029888.html");
+		FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
+
+		System.out.println();
+	}*/
 }

+ 40 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/EVisaConfigClientImpl.java

@@ -0,0 +1,40 @@
+package org.springblade.manager.feign;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.manager.entity.TextdictInfo;
+import org.springblade.manager.service.ITextdictInfoService;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+public class EVisaConfigClientImpl implements EVisaConfigClient {
+
+    private final ITextdictInfoService textdictInfoService;
+
+    @Override
+    public List<JSONObject> queryEVisaConfigByTableIds(List<String> tableIds) {
+        List<JSONObject> jsonResult = new ArrayList<>();
+
+        List<TextdictInfo> configResult = this.textdictInfoService.list(Wrappers.<TextdictInfo>lambdaQuery().in(TextdictInfo::getTabId, tableIds).in(TextdictInfo::getSigRoleId, Arrays.asList(AuthUtil.getUser().getRoleId().split(","))));
+        if(configResult != null && configResult.size() > 0){
+            configResult.forEach(config -> {
+                JSONObject jsonObject = new JSONObject();
+                //标识
+                jsonObject.put("KEY", config.getId());
+                //X/Y轴偏移量
+                jsonObject.put("X", config.getPyzbx());
+                jsonObject.put("Y", config.getColKey());
+
+                jsonResult.add(jsonObject);
+            });
+        }
+        return jsonResult;
+    }
+}

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

@@ -19,7 +19,7 @@
     </resultMap>
 
     <select id="selectTextdictInfoPage" resultMap="textdictInfoResultMap">
-        select * from m_textdict_info where is_deleted = 0
+        select * from m_textdict_info where is_deleted = 0 and type =#{param2.type}
     </select>
 
 </mapper>

+ 58 - 42
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -95,15 +95,17 @@
 
     <update id="deleteBatch">
         DELETE FROM m_wbs_tree_contract
-        WHERE ( id OR parent_id ) IN
+        WHERE (id IN
         <foreach item="ids" collection="ids" open="(" close=")" separator=",">
             #{ids}
         </foreach>
-
+        OR parent_id IN
+        <foreach item="ids" collection="ids" open="(" close=")" separator=",">
+            #{ids}
+        </foreach>)
         AND wbs_id = #{wbsId}
         AND project_id = #{projectId}
         AND contract_id = #{contractId}
-        /*AND contract_type = 1*/
     </update>
 
     <update id="updateByCondition">
@@ -192,7 +194,8 @@
                dept_name,
                full_name,
                dept_category,
-               excel_id
+               excel_id,
+               is_link_table
         from m_wbs_tree_private
         where is_deleted = 0
           and major_data_type = 5
@@ -208,16 +211,16 @@
                wbs_type                                                                   AS "wbsType",
                wbs_id                                                                     AS "wbsId",
                project_id                                                                 AS "projectId",
-               (select project_name from m_project_info where id = #{projectId})          AS "projectName",
                contract_id                                                                AS "contractId",
                contract_type                                                              AS "contractType",
+               (select project_name from m_project_info where id = #{projectId})          AS "projectName",
                (select contract_name from m_contract_info ci where ci.id = t.contract_id) AS "contractName"
         FROM m_wbs_tree_contract t
         WHERE project_id = #{projectId}
           AND contract_type = 1
+          AND status = 1
           AND parent_id = 0
           AND is_deleted = 0
-          AND status = 1
     </select>
 
     <select id="selectCondition" resultType="org.springblade.manager.entity.WbsTreeContract">
@@ -396,7 +399,11 @@
     </select>
 
     <select id="queryContractSubmitWbsTreeByContractId" resultMap="ResultMap">
-        select p_key_id, contract_id, major_data_type from m_wbs_tree_contract where is_deleted = 0 and major_data_type in(1,2,3,4) and contract_id = #{contractId}
+        select p_key_id, contract_id, major_data_type
+        from m_wbs_tree_contract
+        where is_deleted = 0
+          and major_data_type in (1, 2, 3, 4)
+          and contract_id = #{contractId}
     </select>
 
     <select id="selectInformationQueryInfo" resultType="org.springblade.business.entity.InformationQuery">
@@ -409,7 +416,11 @@
     </select>
 
     <select id="selectTableListInfo" resultType="org.springblade.manager.entity.WbsTreeContract">
-        SELECT p_key_id,id,dept_name,type,parent_id,is_tab_pdf FROM m_wbs_tree_contract
+        SELECT p_key_id AS "pKeyId"
+        ,id,dept_name AS "deptName"
+        ,type,parent_id AS "parentId"
+        ,is_tab_pdf AS "isTabPdf"
+        FROM m_wbs_tree_contract
         WHERE ( id IN
         <foreach item="ids" collection="ids" open="(" close=")" separator=",">
             #{ids}
@@ -438,50 +449,50 @@
     <update id="updateBatchByIds">
         UPDATE m_wbs_tree_contract
         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}
-            <if test="wbsTree.sort != null and wbsTree.sort != ''">
-                , sort = #{wbsTree.sort}
-            </if>
+        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}
+        <if test="wbsTree.sort != null and wbsTree.sort != ''">
+            , sort = #{wbsTree.sort}
+        </if>
         WHERE id = #{wbsTree.id}
-          AND contract_id = #{id}
-          AND status = 1
-          AND is_deleted = 0
+        AND contract_id = #{id}
+        AND status = 1
+        AND is_deleted = 0
     </update>
 
     <update id="updateBatchByIds2">
         UPDATE m_wbs_tree_contract
         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}
-            <if test="wbsTreePrivate.sort != null and wbsTreePrivate.sort != ''">
-                , sort = #{wbsTreePrivate.sort}
-            </if>
+        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}
+        <if test="wbsTreePrivate.sort != null and wbsTreePrivate.sort != ''">
+            , sort = #{wbsTreePrivate.sort}
+        </if>
         WHERE id = #{wbsTreePrivate.id}
-          AND contract_id = #{id}
-          AND status = 1
-          AND is_deleted = 0
+        AND contract_id = #{id}
+        AND status = 1
+        AND is_deleted = 0
     </update>
 
     <update id="updateContractTablesInfo">
         UPDATE m_wbs_tree_contract
         SET dept_name = #{wbsTreePrivate.deptName},
-            full_name =#{wbsTreePrivate.deptName},
-            table_type  = #{wbsTreePrivate.tableType},
-            table_owner = #{wbsTreePrivate.tableOwner}
-            <if test="wbsTreePrivate.sort != null and wbsTreePrivate.sort != ''">
-                , sort = #{wbsTreePrivate.sort}
-            </if>
+        full_name =#{wbsTreePrivate.deptName},
+        table_type = #{wbsTreePrivate.tableType},
+        table_owner = #{wbsTreePrivate.tableOwner}
+        <if test="wbsTreePrivate.sort != null and wbsTreePrivate.sort != ''">
+            , sort = #{wbsTreePrivate.sort}
+        </if>
         WHERE (id = #{wbsTreePrivate.id} OR old_id = #{wbsTreePrivate.id})
         AND project_id = #{wbsTreePrivate.projectId}
         AND contract_id = #{contractInfoId}
@@ -491,7 +502,7 @@
     </update>
 
     <update id="updateBatchWbsContract" parameterType="java.util.List">
-        <foreach  collection="listContract" item="item" index="index" separator=";">
+        <foreach collection="listContract" item="item" index="index" separator=";">
             UPDATE m_wbs_tree_contract
             <set>
                 dept_name = #{item.deptName},
@@ -512,7 +523,12 @@
     </update>
 
     <select id="selectQueryValueLikeNodeName" resultMap="ResultMap">
-        select * from m_wbs_tree_contract where is_deleted = 0 and contract_id = #{contractId} and (dept_name like concat('%',#{queryValue},'%') or full_name like concat('%',#{queryValue},'%')) and `type` = '1'
+        select *
+        from m_wbs_tree_contract
+        where is_deleted = 0
+          and contract_id = #{contractId}
+          and (dept_name like concat('%', #{queryValue}, '%') or full_name like concat('%', #{queryValue}, '%'))
+          and `type` = '1'
     </select>
 
     <select id="selectQueryCurrentNodeByAncestors" resultMap="ResultMap">

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

@@ -49,8 +49,6 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
 
     boolean saveAndUpdateContract(ContractInfoVO contractInfo);
 
-    boolean saveAndUpdateContract2(ContractInfoVO contractInfo);
-
     List<ContractInfo> findContractInProject(String ids);
 
     ContractInfo selectById(String contractId);

+ 0 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IImageClassificationConfigService.java

@@ -1,19 +1,3 @@
-/*
- *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are met:
- *
- *  Redistributions of source code must retain the above copyright notice,
- *  this list of conditions and the following disclaimer.
- *  Redistributions in binary form must reproduce the above copyright
- *  notice, this list of conditions and the following disclaimer in the
- *  documentation and/or other materials provided with the distribution.
- *  Neither the name of the dreamlu.net developer nor the names of its
- *  contributors may be used to endorse or promote products derived from
- *  this software without specific prior written permission.
- *  Author: Chill 庄骞 (smallchill@163.com)
- */
 package org.springblade.manager.service;
 
 import org.springblade.manager.entity.ImageClassificationConfig;

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

@@ -22,7 +22,7 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     List<WbsTreeContract> queryContractSubmitWbsTreeByContractId(String contractId);
 
-    boolean submitWbsTreeInContract1(WbsTreeContractDTO wbsTreeContractDTO);
+    boolean submitWbsTreeInContract(WbsTreeContractDTO wbsTreeContractDTO);
 
     List<WbsTreeContract> findWbsTreeContract(String ids);
 

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

@@ -36,7 +36,7 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
 
     boolean importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException;
 
-    Boolean submitWbsTreeInProject1(WbsTreeContractDTO pawDTO);
+    Boolean submitWbsTreeInProject(WbsTreeContractDTO pawDTO);
 
     WbsTreeAllListVO findWbsTreeList(Integer type);
 

+ 2 - 28
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -13,6 +13,7 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.ArchiveTreeDTO;
 import org.springblade.manager.dto.ArchiveTreeSortDTO;
 import org.springblade.manager.entity.ArchiveTree;
+import org.springblade.manager.unit.DiffListUtil;
 import org.springblade.manager.vo.ArchiveTreeVO;
 import org.springblade.manager.mapper.ArchiveTreeMapper;
 import org.springblade.manager.service.IArchiveTreeService;
@@ -28,33 +29,6 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
 
     private final ArchiveTreeMapper archiveTreeMapper;
 
-    private static List<String> getDiffRent(List<String> list1, List<String> list2) {
-        List<String> diff = new ArrayList<String>();
-        List<String> maxList = list1;
-        List<String> minList = list2;
-        if (list2.size() > list1.size()) {
-            maxList = list2;
-            minList = list1;
-        }
-        Map<String, Integer> map = new HashMap<String, Integer>(maxList.size());
-        for (String string : maxList) {
-            map.put(string, 1);
-        }
-        for (String string : minList) {
-            if (map.get(string) != null) {
-                map.put(string, 2);
-                continue;
-            }
-            diff.add(string);
-        }
-        for (Map.Entry<String, Integer> entry : map.entrySet()) {
-            if (entry.getValue() == 1) {
-                diff.add(entry.getKey());
-            }
-        }
-        return diff;
-    }
-
     @Override
     public boolean initArchiveTree() {
         QueryWrapper<ArchiveTree> queryWrapper = new QueryWrapper<>();
@@ -117,7 +91,7 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
         archiveTrees.forEach(id -> {
             idList2.add(String.valueOf(id.getId()));
         });
-        List<String> diffRent = getDiffRent(idList1, idList2);
+        List<String> diffRent = DiffListUtil.getDiffRent(idList1, idList2);
         if (diffRent.size() == 0) {
             return true;
         } else {

+ 30 - 213
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -38,20 +38,17 @@ import java.util.stream.Collectors;
 
 @Service
 @AllArgsConstructor
-public class ContractInfoServiceImpl
-        extends BaseServiceImpl<ContractInfoMapper, ContractInfo>
-        implements IContractInfoService {
+public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper, ContractInfo> implements IContractInfoService {
 
     private final ContractInfoMapper contractInfoMapper;
     private final ProjectContractAreaMapper projectContractAreaMapper;
     private final SaveUserInfoByProjectMapper saveUserInfoByProjectMapper;
     private final WbsTreeContractMapper wbsTreeContractMapper;
-    private final WbsTreeContractServiceImpl wbsTreeContractService;
 
     @Override
     public List<String> getProcessContractByJLContractId(String contractId) {
         List<ContractRelationJlyz> relationJlyzs = baseMapper.selectByContractRelationJlyz(Long.parseLong(contractId));
-        if(relationJlyzs != null && relationJlyzs.size() > 0){
+        if (relationJlyzs != null && relationJlyzs.size() > 0) {
             List<Long> SGContractIds = relationJlyzs.stream().map(ContractRelationJlyz::getId).distinct().collect(Collectors.toList());
             return JSONArray.parseArray(JSONObject.toJSONString(SGContractIds), String.class);
         }
@@ -99,7 +96,6 @@ public class ContractInfoServiceImpl
         return contractInfoMapper.findUserInfoByCondition(rId, pId, userName);
     }
 
-
     @Override
     public List<User> findUserList() {
         return contractInfoMapper.findUserList();
@@ -116,7 +112,7 @@ public class ContractInfoServiceImpl
 
     @Override
     public String selectStartFileId(String startFileUrl) {
-//        return contractInfoMapper.selectStartFileId(startFileUrl);
+        //return contractInfoMapper.selectStartFileId(startFileUrl);
         return null;
     }
 
@@ -132,7 +128,7 @@ public class ContractInfoServiceImpl
         //return ForestNodeMerger.merge(baseMapper.tree(wbsId, projectId, contractId, null, null));
 
         //方式2
-        List<WbsTreeContractVO> wbsTreeContractVOS = baseMapper.tree2(wbsId, projectId, contractId,null,null);
+        List<WbsTreeContractVO> wbsTreeContractVOS = baseMapper.tree2(wbsId, projectId, contractId, null, null);
         return buildWbsTreeByStream(wbsTreeContractVOS);
     }
 
@@ -163,13 +159,6 @@ public class ContractInfoServiceImpl
         return wbsTreeContractMapper.selectListByCondition(projectId);
     }
 
-    /**
-     * 对客户端接口
-     *
-     * @param contractId 合同段ID
-     * @param wbsType    需要查询的节点类型
-     * @return 合同段自身的划分树
-     */
     @Override
     public List<WbsTreeContractTreeVO> queryContractWbsTreeByContractIdAndType(String contractId, Integer wbsType, String parentId) {
         List<WbsTreeContractTreeVO> vo = this.baseMapper.tree(null, null, contractId, wbsType, parentId);
@@ -181,16 +170,10 @@ public class ContractInfoServiceImpl
         return this.baseMapper.tree(null, null, contractId, wbsType, parentId);
     }
 
-
-    /**
-     * 新增合同段保存(施工-监理引用施工合同wbs私有树)
-     */
-    @Override
     @Transactional(rollbackFor = Exception.class)
-    @Deprecated
     public boolean saveAndUpdateContract(ContractInfoVO contractInfo) {
-        //新增
         if (contractInfo.getId() == null) {
+            //新增
             List<ContractInfo> contractInfos = baseMapper.selectList(Wrappers.<ContractInfo>query().lambda()
                     .eq(ContractInfo::getContractName, contractInfo.getContractName())
                     .eq(ContractInfo::getPId, contractInfo.getPId())
@@ -204,24 +187,12 @@ public class ContractInfoServiceImpl
 
             boolean row = saveOrUpdate(contractInfo);
 
-            //新增contract_type =2监理 =3指挥部(业主)类型Wbs树
+            //新增合同段 监理、业主与施工wbs树信息
             if (contractInfo.getContractType().equals(2) || contractInfo.getContractType().equals(3)) {
                 List<WbsTreeContractVO3> infos = contractInfo.getIdList();
                 infos.forEach(info -> {
-                    List<WbsTreeContract> wbsTreeContracts = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getContractId, info.getContractId())
-                    );
+                    baseMapper.insertContractRelationJLYZ(SnowFlakeUtil.getId(), contractInfo.getId(), info.getContractId());
 
-                    //初始化
-                    wbsTreeContracts.forEach(i -> {
-                        Long id = SnowFlakeUtil.getId();
-                        i.setPKeyId(id);
-                        i.setContractIdRelation(i.getContractId());
-                        i.setContractId(String.valueOf(contractInfo.getId()));
-                        i.setContractType(contractInfo.getContractType());
-                    });
-
-                    wbsTreeContractService.saveBatch(wbsTreeContracts);
                 });
             }
 
@@ -237,91 +208,38 @@ public class ContractInfoServiceImpl
             if (contractInfos.size() > 0) {
                 throw new ServiceException("合同段名称已存在当前项目下,请重新输入");
             }
-            if (StringUtils.isEmpty(String.valueOf(contractInfo.getContractType()))) {
-                throw new ServiceException("合同类型不能为空");
-            }
+
+            //新增合同段
             boolean row = saveOrUpdate(contractInfo);
+
+            //关联合同段 监理、业主与施工wbs树信息
             if (contractInfo.getContractType().equals(2) || contractInfo.getContractType().equals(3)) {
-                //当前所有入参施工合同根节点合同id
-                List<String> idList1 = new ArrayList<>();
-                //当前所有已引用监理或业主根节点合同引用id
-                List<String> idList2 = new ArrayList<>();
-
-                List<WbsTreeContractVO3> list = contractInfo.getIdList();
-                if (list.size() > 0) {
-                    list.forEach(cId -> {
-                        //入参根节点id
-                        String contractId = cId.getContractId();
-                        idList1.add(contractId);
-                    });
+                //获取当前入参的施工合同段IdList
+                List<WbsTreeContractVO3> idList = contractInfo.getIdList();
+                if (idList.isEmpty()) {
+                    throw new ServiceException("请先选择关联的合同段权限");
                 }
+                List<String> idList_SG = idList.stream().map(WbsTreeContractVO3::getContractId).collect(Collectors.toList());
 
-                //获取当前所有已引用监理或业主根节点合同引用id
-                List<WbsTreeContract> wbsTreeContracts = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                        .eq(WbsTreeContract::getContractId, contractInfo.getId())
-                        .eq(WbsTreeContract::getContractType, contractInfo.getContractType())
-                        .eq(WbsTreeContract::getStatus, 1)
-                        .eq(WbsTreeContract::getParentId, 0)
-                );
-
-                wbsTreeContracts.forEach(id -> {
-                    String contractIdRelation = id.getContractIdRelation();
-                    idList2.add(String.valueOf(contractIdRelation));
-                });
+                //获取当前合同段存在的关系信息
+                List<ContractRelationJlyz> resultListJLTZ = baseMapper.selectByContractRelationJlyz(contractInfo.getId());
 
-                List<String> result = getDiffrent(idList1, idList2);
-
-                if (idList1.size() > idList2.size()) {
-                    //新增
-                    result.forEach(id -> {
-                        //查询当前需要引用的施工合同wbs树根节点信息
-                        WbsTreeContract wbsTreeContract = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                                .eq(WbsTreeContract::getContractId, id)
-                                .eq(WbsTreeContract::getParentId, 0)
-                                .eq(WbsTreeContract::getContractType, 1)
-                        );
-
-                        WbsTreeContract wbsTreeContractsIsDeleted = wbsTreeContractMapper.selectCondition(contractInfo.getId(), wbsTreeContract.getId(), id, contractInfo.getContractType());
-
-                        if (wbsTreeContractsIsDeleted != null) {
-                            //修改 通过当前合同id = contractInfo.getId() , 监理或业主关联的合同段id = contractIdRelation
-                            wbsTreeContractMapper.updateByCondition2(contractInfo.getId(), wbsTreeContractsIsDeleted.getContractIdRelation());
-
-                        } else {
-                            //新增 根据施工合同根节点查询当前根节点下的施工合同wbs树+表
-                            List<WbsTreeContract> wbsTreeContractsList = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                                    .eq(WbsTreeContract::getContractId, id)
-                                    .eq(WbsTreeContract::getContractType, 1)
-                            );
-
-                            //初始化
-                            wbsTreeContractsList.forEach(i -> {
-                                Long id1 = SnowFlakeUtil.getId();
-                                i.setPKeyId(id1);
-                                i.setContractIdRelation(i.getContractId());
-                                i.setContractId(String.valueOf(contractInfo.getId()));
-                                i.setContractType(contractInfo.getContractType());
-                            });
-
-                            wbsTreeContractService.saveBatch(wbsTreeContractsList);
-                        }
-                    });
-                } else {
-
-                    result.forEach(id -> {
-                        //根据关联项目id = getContractIdRelation 删除树
-                        wbsTreeContractMapper.delete(Wrappers.<WbsTreeContract>update().lambda()
-                                .set(WbsTreeContract::getIsDeleted, 1)
-                                .eq(WbsTreeContract::getContractIdRelation, id)
-                                .eq(WbsTreeContract::getProjectId, contractInfo.getPId())
-                                .eq(WbsTreeContract::getContractId, contractInfo.getId())
-                        );
-                    });
+                //全部删除当前关系信息
+                if (resultListJLTZ.size() > 0) {
+                    baseMapper.deleteContractRelationJLYZ(contractInfo.getId());
                 }
+
+                //新增
+                idList_SG.forEach(ids -> {
+                    baseMapper.insertContractRelationJLYZ(SnowFlakeUtil.getId(), contractInfo.getId(), ids);
+                });
+
             }
 
             return submitContractRelevantInfo(row, contractInfo);
+
         }
+
     }
 
     private boolean submitContractRelevantInfo(boolean row, ContractInfoVO contractInfo) {
@@ -375,108 +293,6 @@ public class ContractInfoServiceImpl
         return false;
     }
 
-    private static List<String> getDiffrent(List<String> list1, List<String> list2) {
-        List<String> diff = new ArrayList<String>();
-        List<String> maxList = list1;
-        List<String> minList = list2;
-        if (list2.size() > list1.size()) {
-            maxList = list2;
-            minList = list1;
-        }
-        Map<String, Integer> map = new HashMap<String, Integer>(maxList.size());
-        for (String string : maxList) {
-            map.put(string, 1);
-        }
-        for (String string : minList) {
-            if (map.get(string) != null) {
-                map.put(string, 2);
-                continue;
-            }
-            diff.add(string);
-        }
-        for (Map.Entry<String, Integer> entry : map.entrySet()) {
-            if (entry.getValue() == 1) {
-                diff.add(entry.getKey());
-            }
-        }
-        return diff;
-    }
-
-    /**
-     * 新增合同段保存2(施工-监理引用施工合同wbs私有树)
-     */
-    @Transactional(rollbackFor = Exception.class)
-    public boolean saveAndUpdateContract2(ContractInfoVO contractInfo) {
-        if (contractInfo.getId() == null) {
-            //新增
-            List<ContractInfo> contractInfos = baseMapper.selectList(Wrappers.<ContractInfo>query().lambda()
-                    .eq(ContractInfo::getContractName, contractInfo.getContractName())
-                    .eq(ContractInfo::getPId, contractInfo.getPId())
-            );
-            if (contractInfos.size() > 0) {
-                throw new ServiceException("合同段名称已存在当前项目下,请重新输入");
-            }
-            if (StringUtils.isEmpty(String.valueOf(contractInfo.getContractType()))) {
-                throw new ServiceException("合同类型不能为空");
-            }
-
-            boolean row = saveOrUpdate(contractInfo);
-
-            //新增合同段 监理、业主与施工wbs树信息
-            if (contractInfo.getContractType().equals(2) || contractInfo.getContractType().equals(3)) {
-                List<WbsTreeContractVO3> infos = contractInfo.getIdList();
-                infos.forEach(info -> {
-                    baseMapper.insertContractRelationJLYZ(SnowFlakeUtil.getId(), contractInfo.getId(), info.getContractId());
-
-                });
-            }
-
-            return submitContractRelevantInfo(row, contractInfo);
-
-        } else {
-            //编辑
-            List<ContractInfo> contractInfos = baseMapper.selectList(Wrappers.<ContractInfo>query().lambda()
-                    .eq(ContractInfo::getContractName, contractInfo.getContractName())
-                    .eq(ContractInfo::getPId, contractInfo.getPId())
-                    .ne(ContractInfo::getId, contractInfo.getId())
-            );
-            if (contractInfos.size() > 0) {
-                throw new ServiceException("合同段名称已存在当前项目下,请重新输入");
-            }
-
-            //新增合同段
-            boolean row = saveOrUpdate(contractInfo);
-
-            //关联合同段 监理、业主与施工wbs树信息
-            if (contractInfo.getContractType().equals(2) || contractInfo.getContractType().equals(3)) {
-                //获取当前入参的施工合同段IdList
-                List<WbsTreeContractVO3> idList = contractInfo.getIdList();
-                if (idList.isEmpty()) {
-                    throw new ServiceException("请先选择关联的合同段权限");
-                }
-                List<String> idList_SG = idList.stream().map(WbsTreeContractVO3::getContractId).collect(Collectors.toList());
-
-                //获取当前合同段存在的关系信息
-                List<ContractRelationJlyz> resultListJLTZ = baseMapper.selectByContractRelationJlyz(contractInfo.getId());
-
-                //全部删除当前关系信息
-                if (resultListJLTZ.size() > 0) {
-                    baseMapper.deleteContractRelationJLYZ(contractInfo.getId());
-                }
-
-                //新增
-                idList_SG.forEach(ids -> {
-                    baseMapper.insertContractRelationJLYZ(SnowFlakeUtil.getId(), contractInfo.getId(), ids);
-                });
-
-            }
-
-            return submitContractRelevantInfo(row, contractInfo);
-
-        }
-
-    }
-
     @Override
     public List<ContractInfo> findContractInProject(String ids) {
         return baseMapper.selectList(Wrappers.<ContractInfo>query().lambda().in(ContractInfo::getPId, Arrays.asList(ids.split(","))));
@@ -502,4 +318,5 @@ public class ContractInfoServiceImpl
     public List<ContractRelationJlyz> searchContractRelationInfo(String contractId) {
         return baseMapper.selectByContractRelationJlyz(Long.valueOf(contractId));
     }
+
 }

+ 92 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -27,12 +27,18 @@ import com.mixsmart.utils.ListUtils;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import org.apache.commons.lang.StringUtils;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
 import org.springblade.business.feign.InformationQueryClient;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.IoUtil;
+import org.springblade.core.tool.utils.ResourceUtil;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.bean.TableInfo;
 import org.springblade.manager.dto.FormData;
@@ -57,6 +63,9 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -290,4 +299,87 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 			}
 		}
 	}
+
+	// 获取用户
+	public Map<String,String>  getTablbCols(String pkeyid, String colkey) throws FileNotFoundException {
+		Map<String,String> dataMap = new HashMap<>();
+		if(StringUtils.isNotEmpty(pkeyid)){
+			return null;
+		}
+		//获取html
+		WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+				.eq(WbsTreeContract::getPKeyId,pkeyid));
+
+		File file1 = ResourceUtil.getFile(wbsTreeContract.getHtmlUrl());
+		//File file1 = ResourceUtil.getFile("file:///Users/hongchuangyanfa/Desktop/privateUrl/1568060412589506560.html");
+
+		FileInputStream fileInputStream = new FileInputStream(file1);
+		String htmlString = IoUtil.readToString(fileInputStream);
+		Document doc = Jsoup.parse(htmlString);
+		Element table = doc.select("table").first();
+		Elements trs = table.select("tr");
+
+		for (int i = 0; i <= trs.size() - 1; i++) {
+			Element tr = trs.get(i);
+			Elements tds = tr.select("td");
+			for (int j = 0; j < tds.size(); j++) {
+				Element data = tds.get(j);
+				String x1 = data.children().get(0).attr("x1");
+			//	String x2 = data.children().get(0).attr("x2");
+				String y1 = data.children().get(0).attr("y1");
+				//String y2 = data.children().get(0).attr("y2");
+				String keyVal = x1+"_"+y1;
+				String keyname = data.children().get(0).attr("keyname");
+				if(StringUtils.isNotEmpty(keyname)){
+					String keys[] = keyname.split("__");
+					String datakey = keys[0];
+					if(dataMap.containsKey(keys[0])){
+						String datakeyVal = dataMap.get(datakey)+";"+keyVal;
+					}else{
+						dataMap.put(datakey,keyVal);
+					}
+				}
+			}
+		}
+		return dataMap;
+	}
+
+/*	public static void main(String[] args) throws FileNotFoundException {
+		File file1 = ResourceUtil.getFile("file:///Users/hongchuangyanfa/Desktop/privateUrl/1568060412589506560.html");
+		Map<String,String> dataMap = new HashMap<>();
+		FileInputStream fileInputStream = new FileInputStream(file1);
+		String htmlString = IoUtil.readToString(fileInputStream);
+		Document doc = Jsoup.parse(htmlString);
+		Element table = doc.select("table").first();
+		Elements trs = table.select("tr");
+
+		for (int i = 0; i <= trs.size() - 1; i++) {
+			Element tr = trs.get(i);
+			Elements tds = tr.select("td");
+			for (int j = 0; j < tds.size(); j++) {
+				Element data = tds.get(j);
+
+				if(data.html().indexOf("keyname=")>=0){
+					String x1 = data.children().get(0).attr("x1");
+					//String x2 = data.children().get(0).attr("x2");
+					String y1 = data.children().get(0).attr("y1");
+					//String y2 = data.children().get(0).attr("y2");
+					String keyVal = x1+"_"+y1;
+					String keyname = data.children().get(0).attr("keyname");
+					if(StringUtils.isNotEmpty(keyname)){
+						String keys[] = keyname.split("__");
+						String datakey = keys[0];
+						if(dataMap.containsKey(datakey)){
+							String datakeyVal = dataMap.get(datakey)+";"+keyVal;
+							dataMap.put(datakey,datakeyVal);
+						}else{
+							dataMap.put(datakey,keyVal);
+						}
+					}
+				}
+			}
+		}
+
+		System.out.println(dataMap);
+	}*/
 }

+ 0 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectContractAreaServiceImpl.java

@@ -10,11 +10,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-/**
- * 客户级项目表 服务实现类
- *
- * @author liuyc
- */
 @Service
 public class ProjectContractAreaServiceImpl extends BaseServiceImpl<ProjectContractAreaMapper, ProjectContractArea> implements ProjectContractAreaService {
 

+ 0 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectInfoServiceImpl.java

@@ -50,7 +50,6 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
         return this.baseMapper.selectProjectList(projectIds);
     }
 
-
     @Override
     public IPage<ProjectInfoVO> selectProjectInfoPage(IPage<ProjectInfoVO> page, ProjectInfoVO projectInfo) {
         return page.setRecords(baseMapper.selectProjectInfoPage(page, projectInfo));
@@ -61,7 +60,6 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
         return contractInfoMapper.selectContractInfoCount();
     }
 
-
     @Override
     public ProjectInfo getOne(Long id) {
         return baseMapper.selectById(id);
@@ -89,5 +87,4 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
         return projectInfoVO2;
     }
 
-
 }

+ 33 - 210
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -4,24 +4,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
-import net.sourceforge.pinyin4j.PinyinHelper;
-import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
-import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
-import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
-import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
-import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.common.utils.SnowFlakeUtil;
 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.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.manager.dto.FormElementDTO;
 import org.springblade.manager.dto.FormElementDTO2;
 import org.springblade.manager.dto.WbsFormElementDTO2;
 import org.springblade.manager.entity.WbsFormElement;
@@ -33,7 +25,7 @@ import org.springblade.manager.mapper.WbsFormElementMapper;
 import org.springblade.manager.mapper.WbsTreeMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.IWbsFormElementService;
-import org.springblade.manager.service.IWbsTreeService;
+import org.springblade.manager.unit.WbsElementUtil;
 import org.springblade.manager.vo.WbsFormElementVO;
 import org.springblade.manager.vo.WbsFormElementVO2;
 import org.springblade.manager.vo.WbsNodeTableVO;
@@ -53,6 +45,12 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     private final WbsTreeMapper wbsTreeMapper;
     private final WbsTreePrivateMapper wbsTreePrivateMapper;
 
+    //元素字符串、数值、时间类型默认长度
+    public static final Integer DEFAULT_ELEMENT_LENGTH_VARCHAR = 250;
+    public static final Integer DEFAULT_ELEMENT_LENGTH_NUMBER = 50;
+    public static final Integer DEFAULT_ELEMENT_LENGTH_DATE = 50;
+    //实体表字段默认长度
+    private static final String ELEMENT_LENGTH_ENTITY = "250";
 
     @Override
     public IPage<WbsFormElementVO> selectWbsFormElementPage(IPage<WbsFormElementVO> page, WbsFormElementVO wbsFormElement) {
@@ -87,30 +85,9 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     private String createSQL(List<WbsFormElement> elementList) {
         StringBuilder sbr = new StringBuilder();
         for (WbsFormElement wbsFormElement : elementList) {
-            /* 字段类型不默认
-            //获取字段名、类型、长度
-            String fieldNameKey = wbsFormElement.getEKey();
-            String fieldType = getInitTableFiledType(wbsFormElement.getEType());
-            String fieldLength = String.valueOf(wbsFormElement.getELength());
-
-            sbr.append("" + fieldNameKey + "");
-            if ("varchar".equals(fieldType)) {
-                sbr.append(" " + fieldType + "(" + fieldLength + ") ,\n");
-            } else if ("bigint".equals(fieldType)) {
-                sbr.append(" " + fieldType + "(" + fieldLength + ") ,\n");
-            } else if ("decimal".equals(fieldType)) {
-                sbr.append(" " + fieldType + "(" + fieldLength + ") ,\n");
-            } else if ("datetime".equals(fieldType)) {
-                sbr.append(" " + fieldType + "(" + fieldLength + ") ,\n");
-            }*/
-
-            //默认字段类型=varchar 长度=255
-            String fieldNameKey = wbsFormElement.getEKey();
-            String fieldType = "varchar";
-            String fieldLength = "250";
-            sbr.append(fieldNameKey);
-            sbr.append(" ").append(fieldType).append("(").append(fieldLength).append(") ,\n");
-
+            //默认字段类型varchar 长度255
+            sbr.append(wbsFormElement.getEKey());
+            sbr.append(" ").append("varchar").append("(").append(ELEMENT_LENGTH_ENTITY).append(") ,\n");
         }
         return String.valueOf(sbr);
     }
@@ -159,7 +136,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                     String substring1 = "key_" + newFiled;
                     eKeyNum.add(substring1);
                     if (wbsFormElement.getEType() == 4) {
-                        wbsFormElement.setELength(0);
+                        wbsFormElement.setELength(DEFAULT_ELEMENT_LENGTH_DATE);
                     }
                 }
                 wbsFormElement.setEKey(eKeyNum.get(eKeyNum.size() - 1));
@@ -170,7 +147,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
             wbsFormElement.setStatus(1);
 
             StringBuilder sbr1 = new StringBuilder();
-            String fieldType = getInitTableFiledType(wbsFormElement.getEType());
+            String fieldType = WbsElementUtil.getInitTableFiledType(wbsFormElement.getEType());
 
             if ("varchar".equals(fieldType)) {
                 if (wbsFormElement.getELength() > 1000 || wbsFormElement.getELength() < 10) {
@@ -182,9 +159,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                     //同步
                     //sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
 
-                    wbsFormElement.setELength(250);
-
-                    sbr1.append(" ").append("varchar").append("(").append(wbsFormElement.getELength()).append(")");
+                    sbr1.append(" ").append("varchar").append("(").append(DEFAULT_ELEMENT_LENGTH_VARCHAR).append(")");
                     String sql = newName + " " + sbr1;
                     baseMapper.alterAddFiled(sql, tableName);
                     return true;
@@ -200,9 +175,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                     //同步
                     //sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
 
-                    wbsFormElement.setELength(250);
-
-                    sbr1.append(" ").append("varchar").append("(").append(wbsFormElement.getELength()).append(")");
+                    sbr1.append(" ").append("varchar").append("(").append(DEFAULT_ELEMENT_LENGTH_VARCHAR).append(")");
                     String sql = newName + " " + sbr1;
                     baseMapper.alterAddFiled(sql, tableName);
                     return true;
@@ -218,16 +191,14 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                     //同步
                     //sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
 
-                    wbsFormElement.setELength(250);
-
-                    sbr1.append(" ").append("varchar").append("(").append(wbsFormElement.getELength()).append(")");
+                    sbr1.append(" ").append("varchar").append("(").append(DEFAULT_ELEMENT_LENGTH_VARCHAR).append(")");
                     String sql = newName + " " + sbr1;
                     baseMapper.alterAddFiled(sql, tableName);
                     return true;
                 }
             } else if ("datetime".equals(fieldType)) {
-                if (wbsFormElement.getELength() != 0) {
-                    throw new ServiceException("请输入正确的长度,范围为0");
+                if (wbsFormElement.getELength() > 50 || wbsFormElement.getELength() < 0) {
+                    throw new ServiceException("请输入正确的长度,范围为0-50");
                 } else {
                     //新增
                     baseMapper.insert(wbsFormElement);
@@ -235,9 +206,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                     //同步
                     //sbr1.append(" ").append(fieldType).append("(").append(0).append(")");
 
-                    wbsFormElement.setELength(250);
-
-                    sbr1.append(" ").append("varchar").append("(").append(wbsFormElement.getELength()).append(")");
+                    sbr1.append(" ").append("varchar").append("(").append(DEFAULT_ELEMENT_LENGTH_VARCHAR).append(")");
                     String sql = newName + " " + sbr1;
                     baseMapper.alterAddFiled(sql, tableName);
                     return true;
@@ -294,7 +263,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
             for (WbsFormElement wbsFormElement : wbsFormElements) {
                 String eKey = wbsFormElement.getEKey();
                 Integer eLength = wbsFormElement.getELength();
-                String eType = getInitTableFiledType(wbsFormElement.getEType());
+                String eType = WbsElementUtil.getInitTableFiledType(wbsFormElement.getEType());
 
                 if (eType.equals("bigint") && (eLength > 255 || eLength < 10)) {
                     throw new ServiceException("请输入正确长度,该类型范围为10-255之间");
@@ -302,6 +271,8 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                     throw new ServiceException("请输入正确长度,该类型范围为10-1000之间");
                 } else if (eType.equals("decimal") && (eLength > 65 || eLength < 10)) {
                     throw new ServiceException("请输入正确长度,该类型范围为10-65之间");
+                } else if (eType.equals("datetime") && (eLength > 50 || eLength < 0)) {
+                    throw new ServiceException("请输入正确长度,该类型范围为0-50之间");
                 }
 
                 /*//当前字段类型
@@ -317,11 +288,11 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
                 //设置默认长度
                 if (eLength <= 255 && eLength > 65) {
-                    eLength = 250;
+                    eLength = DEFAULT_ELEMENT_LENGTH_VARCHAR;
                 } else if (eLength <= 1000 && eLength > 500) {
-                    eLength = 500;
+                    eLength = DEFAULT_ELEMENT_LENGTH_VARCHAR * 2;
                 } else if (eLength >= 0 && eLength <= 65) {
-                    eLength = 50;
+                    eLength = DEFAULT_ELEMENT_LENGTH_NUMBER;
                 }
 
                 //判断是否存在该Key字段
@@ -330,10 +301,8 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                     //修改
                     baseMapper.updateFiledType(initTableName, eKey, "varchar", eLength);
                 }
-
             }
         }
-
         return true;
     }
 
@@ -400,8 +369,8 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         for (WbsFormElement listDatum : listData) {
             id++;
             listDatum.setFId(wbsFormElementVO2.getId());
-            String initTableFiledType = getInitTableFiledType(listDatum.getEType());
-            Integer elementLength = getElementLength2(initTableFiledType);
+            String initTableFiledType = WbsElementUtil.getInitTableFiledType(listDatum.getEType());
+            Integer elementLength = WbsElementUtil.getElementLength2(initTableFiledType);
             listDatum.setELength(elementLength);
             listDatum.setEKey("key_" + id);
         }
@@ -477,22 +446,18 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                             wbsFormElementInfo.setId(SnowFlakeUtil.getId());
                             wbsFormElementInfo.setFId(String.valueOf(tableId));
                             wbsFormElementInfo.setStatus(1);
-                            wbsFormElementInfo.setELength(Integer.parseInt(setDefaultElementLength(wbsFormElementInfo.getEType())));
+                            wbsFormElementInfo.setELength(Integer.parseInt(WbsElementUtil.setDefaultElementLength(wbsFormElementInfo.getEType())));
 
                             baseMapper.insert(wbsFormElementInfo);
 
                             //String eTypeFiled = getInitTableFiledType(wbsFormElementInfo.getEType());
                             //int eLengthFiled = Integer.parseInt(setDefaultElementLength(wbsFormElementInfo.getEType()));
 
-                            //初始化默认值varchar 长度255
-                            String eTypeFiled = "varchar";
-                            int eLengthFiled = 250;
-
                             //判断是否存在该Key字段
                             int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
                             if (row1 == 0) {
                                 //追加字段到实体表中
-                                wbsTreeMapper.alterTableFiled(wbsTree.getInitTableName(), key, eTypeFiled, eLengthFiled);
+                                wbsTreeMapper.alterTableFiled(wbsTree.getInitTableName(), key, "varchar", DEFAULT_ELEMENT_LENGTH_VARCHAR);
                                 //判断是否追加成功
                                 int row2 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
                                 if (row2 != 1) {
@@ -563,22 +528,18 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                     wbsFormElementInfo.setId(SnowFlakeUtil.getId());
                     wbsFormElementInfo.setFId(String.valueOf(formElementDTO.getId()));
                     wbsFormElementInfo.setStatus(1);
-                    wbsFormElementInfo.setELength(Integer.parseInt(setDefaultElementLength(wbsFormElementInfo.getEType())));
+                    wbsFormElementInfo.setELength(Integer.parseInt(WbsElementUtil.setDefaultElementLength(wbsFormElementInfo.getEType())));
 
                     baseMapper.insert(wbsFormElementInfo);
 
                     //String eTypeFiled = getInitTableFiledType(wbsFormElementInfo.getEType());
                     //int eLengthFiled = Integer.parseInt(setDefaultElementLength(wbsFormElementInfo.getEType()));
 
-                    //初始化默认值varchar 长度255
-                    String eTypeFiled = "varchar";
-                    int eLengthFiled = 250;
-
                     //判断是否存在该Key字段
                     int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
                     if (row1 == 0) {
                         //追加字段到实体表中
-                        wbsTreeMapper.alterTableFiled(wbsTree.getInitTableName(), key, eTypeFiled, eLengthFiled);
+                        wbsTreeMapper.alterTableFiled(wbsTree.getInitTableName(), key, "varchar", DEFAULT_ELEMENT_LENGTH_VARCHAR);
                         //判断是否追加成功
                         int row2 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
                         if (row2 == 0) {
@@ -621,10 +582,8 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                 }
 
                 //初始化
-                Long id = SnowFlakeUtil.getId();
-                String newTableName = "m_" + DateUtil.time() + "_" + id;
+                String newTableName = "m_" + DateUtil.time() + "_" + SnowFlakeUtil.getId();
                 formElementDTO.setInitTableName(newTableName);
-
                 //设置parentId=nodeId
                 formElementDTO.setParentId(Long.valueOf(nodeId));
 
@@ -640,7 +599,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                             wbsFormElement.setEKey("key_" + i++);
                             wbsFormElement.setId(SnowFlakeUtil.getId());
                             wbsFormElement.setFId(String.valueOf(formElementDTO.getId()));
-                            wbsFormElement.setELength(Integer.valueOf(setDefaultElementLength(wbsFormElement.getEType())));
+                            wbsFormElement.setELength(Integer.valueOf(WbsElementUtil.setDefaultElementLength(wbsFormElement.getEType())));
                             wbsFormElement.setStatus(1);
                             wbsFormElement.setIsDeleted(0);
                         }
@@ -725,146 +684,10 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         for (WbsFormElement listDatum : listData) {
             // String initTableFiledType = getInitTableFiledType(listDatum.getEType());
             // int elementLength = getElementLength(initTableFiledType);
-
-            //默认初始化值
-            String eKey = listDatum.getEKey();
-            String initTableFiledType = "varchar";
-            Integer elementLength = 250;
-
             //同步
-            baseMapper.addTableFiled(initTableName, eKey, initTableFiledType, elementLength);
+            baseMapper.addTableFiled(initTableName, listDatum.getEKey(), "varchar", DEFAULT_ELEMENT_LENGTH_VARCHAR);
         }
-
         return true;
     }
 
-    private String getInitTableFiledType(Integer type) {
-        switch (type) {
-            case 2:
-                //整数
-                return "bigint";
-            case 3:
-                //小数
-                return "decimal";
-            case 4:
-                //日期
-                return "datetime";
-            case 5:
-                //数值
-                return "decimal";
-            case 6:
-                //签名
-                return "varchar";
-            case 7:
-                //文件
-                return "varchar";
-            case 1:
-            default:
-                //字符串
-                return "varchar";
-        }
-    }
-
-    private Integer getElementLength(String type) {
-        switch (type) {
-            case "字符串":
-            case "签名":
-            case "文件":
-                return 250;
-            case "整数":
-            case "数值":
-            case "小数":
-                return 50;
-            case "日期":
-            default:
-                return 0;
-        }
-    }
-
-    private Integer getElementLength2(String type) {
-        switch (type) {
-            case "varchar":
-                return 250;
-            case "bigint":
-            case "decimal":
-                return 50;
-            case "datetime":
-            default:
-                return 0;
-        }
-    }
-
-    private String setDefaultElementLength(Integer type) {
-        switch (type) {
-            case 1:  //字符串
-            case 7:  //文件
-            case 6:  //签名
-                return "250";
-            case 2:  //整数
-            case 5:  //数值
-            case 3:  //小数
-                return "50";
-            case 4:  //日期
-            default:
-                return "0";
-        }
-    }
-
-    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();
-        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
-
-        // 设置大小写
-        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
-
-        // 设置声调表示方法
-        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
-
-        // 设置字母u表示方法
-        format.setVCharType(HanyuPinyinVCharType.WITH_V);
-        String[] s;
-        String rs = "";
-        try {
-            StringBuilder sb = new StringBuilder();
-            for (int i = 0; i < chars.length; i++) {
-                // 判断是否为汉字字符
-                if (String.valueOf(chars[i]).matches("[\\u4E00-\\u9FA5]+")) {
-                    s = PinyinHelper.toHanyuPinyinStringArray(chars[i], format);
-                    if (s != null) {
-                        sb.append(s[0]).append(separator);
-                        continue;
-                    }
-                }
-
-                sb.append(chars[i]);
-
-                if ((i + 1 >= chars.length) || String.valueOf(chars[i + 1]).matches("[\\u4E00-\\u9FA5]+")) {
-                    sb.append(separator);
-                }
-            }
-
-            rs = sb.substring(0, sb.length());
-        } catch (BadHanyuPinyinOutputFormatCombination e) {
-            e.printStackTrace();
-
-        }
-        return rs;
-    }
-
-
 }

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

@@ -9,9 +9,7 @@ import org.springblade.common.utils.SnowFlakeUtil;
 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.ForestNodeManager;
 import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.node.INode;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.manager.dto.WbsTreeContractDTO;
@@ -19,9 +17,9 @@ import org.springblade.manager.entity.*;
 import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.IWbsTreeContractService;
+import org.springblade.manager.unit.DiffListUtil;
 import org.springblade.manager.vo.WbsTreeContractTreeVO;
 import org.springblade.manager.vo.WbsTreeContractTreeVO3;
-import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -62,7 +60,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean submitWbsTreeInContract1(WbsTreeContractDTO pawDTO) {
+    public boolean submitWbsTreeInContract(WbsTreeContractDTO pawDTO) {
         String wbsTreeIds = pawDTO.getWbsTreeIds();
         String[] ids = wbsTreeIds.split(",");
         List<String> idList = Arrays.asList(ids);
@@ -119,7 +117,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             List<Long> collect = wbsTreePrivateList2.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
             List<String> collect2 = collect.stream().map(String::valueOf).collect(Collectors.toList());
             //获取所有wbsTreePrivate新增的表单Id
-            List<String> diffRent1 = getDiffrent(collect2, collect3);
+            List<String> diffRent1 = DiffListUtil.getDiffRent(collect2, collect3);
 
             if (collect2.size() == collect3.size()) {
                 throw new ServiceException("未检测到当前引用的私有wbs树下有新增的元素表信息");
@@ -153,14 +151,13 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
 
                 //获取当前节点、表
                 List<WbsTreeContract> wbsTreeContractList = baseMapper.selectTableListInfo(ids1, pawDTO.getWbsId(), pawDTO.getProjectId(), pawDTO.getContractId());
-
                 List<WbsTreeContract> tableNames = new ArrayList<>();
                 if (wbsTreeContractList.size() > 0) {
-                    for (WbsTreeContract wbsTreeContract : wbsTreeContractList) {
-                        if (wbsTreeContract.getIsTabPdf() == 2) {
+                    wbsTreeContractList.forEach(wbsTreeContract -> {
+                        if (wbsTreeContract.getIsTabPdf() != null && wbsTreeContract.getIsTabPdf() == 2) {
                             tableNames.add(wbsTreeContract);
                         }
-                    }
+                    });
                 }
 
                 List<String> nodeNames = tableNames.stream().map(WbsTreeContract::getDeptName).collect(Collectors.toList());
@@ -214,7 +211,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
 
                 //新增合同段节点、表
                 //baseMapper.insertBatchSomeColumn(wbsTreeContractList);
-                insertBatch(wbsTreeContractList,100);
+                insertBatch(wbsTreeContractList, 100);
 
                 //新增施工台账
                 constructionLedgerFeign.initConstructionLedger(constructionLedgerList);
@@ -361,7 +358,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         wbsTreeContract.setWbsType(wbsTree.getType());
         wbsTreeContract.setProjectId(pawDTO.getProjectId());
         wbsTreeContract.setContractId(pawDTO.getContractId());
-        wbsTreeContract.setContractType(pawDTO.getContractType());
+        wbsTreeContract.setContractType(1);
         wbsTreeContract.setTenantId(wbsTree.getTenantId());
         wbsTreeContract.setParentId(wbsTree.getParentId());
         wbsTreeContract.setAncestors(wbsTree.getAncestors());
@@ -396,31 +393,4 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         return wbsTreeContract;
     }
 
-    public static List<String> getDiffrent(List<String> list1, List<String> list2) {
-        List<String> diff = new ArrayList<String>();
-        List<String> maxList = list1;
-        List<String> minList = list2;
-        if (list2.size() > list1.size()) {
-            maxList = list2;
-            minList = list1;
-        }
-        Map<String, Integer> map = new HashMap<String, Integer>(maxList.size());
-        for (String string : maxList) {
-            map.put(string, 1);
-        }
-        for (String string : minList) {
-            if (map.get(string) != null) {
-                map.put(string, 2);
-                continue;
-            }
-            diff.add(string);
-        }
-        for (Map.Entry<String, Integer> entry : map.entrySet()) {
-            if (entry.getValue() == 1) {
-                diff.add(entry.getKey());
-            }
-        }
-        return diff;
-    }
-
 }

+ 17 - 177
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -2,12 +2,6 @@ package org.springblade.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
-import net.sourceforge.pinyin4j.PinyinHelper;
-import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
-import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
-import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
-import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
-import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
@@ -31,7 +25,9 @@ import org.springblade.manager.mapper.*;
 import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.manager.unit.DiffListUtil;
 import org.springblade.manager.unit.RedisUtil;
+import org.springblade.manager.unit.WbsElementUtil;
 import org.springblade.manager.vo.*;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.support.JdbcUtils;
@@ -218,7 +214,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             maps.forEach(map -> {
                 String deptName = map.get("表名");
                 wbsTree.setDeptName(deptName);
-                wbsTree.setTableType(getTableType(map.get("表类型")));
+                wbsTree.setTableType(WbsElementUtil.getTableType(map.get("表类型")));
                 Long id = SnowFlakeUtil.getId();
                 String initTableName = "m_" + DateUtil.time() + "_" + id;
                 wbsTree.setInitTableName(initTableName);
@@ -255,18 +251,15 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         String key = "key_" + keyNumb[0];
                         wbsFormElement.setEKey(key);
                         wbsFormElement.setFId(String.valueOf(elementTableId));
-                        wbsFormElement.setELength(getElementLength(map.get("数据类型")));
-                        wbsFormElement.setEType(getElementType(map.get("数据类型")));
+                        wbsFormElement.setELength(WbsElementUtil.getElementLength(map.get("数据类型")));
+                        wbsFormElement.setEType(WbsElementUtil.getElementType(map.get("数据类型")));
                         wbsFormElement.setEInspectionMethod(map.get("计算公式、方法或数值"));
                         wbsFormElement.setEAllowDeviation(map.get("允许偏差范围"));
                         wbsFormElement.setRemark(map.get("备注"));
 
                         wbsFormElementService.save(wbsFormElement);
 
-                        String eTypeFiled = getInitTableFiledType(wbsFormElement.getEType());
-                        Integer eLengthFiled = wbsFormElement.getELength();
-
-                        baseMapper.alterTableFiled(initTableName, wbsFormElement.getEKey(), eTypeFiled, eLengthFiled);
+                        baseMapper.alterTableFiled(initTableName, wbsFormElement.getEKey(), "varchar", WbsFormElementServiceImpl.DEFAULT_ELEMENT_LENGTH_VARCHAR);
                     }
 
                 });
@@ -299,97 +292,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return false;
     }
 
-    private String getInitTableFiledType(Integer type) {
-        switch (type) {
-            case 2:
-                //整数
-                return "bigint";
-            case 3:
-                //小数
-                return "decimal";
-            case 4:
-                //日期
-                return "datetime";
-            case 5:
-                //数值
-                return "decimal";
-            case 6:
-                //签名
-                return "varchar";
-            case 7:
-                //文件
-                return "varchar";
-            case 1:
-            default:
-                //字符串
-                return "varchar";
-        }
-    }
-
-    private Integer getElementType(String type) {
-        switch (type) {
-            case "字符串":
-                return 1;
-            case "整数":
-                return 2;
-            case "小数":
-                return 3;
-            case "日期":
-                return 4;
-            case "数值":
-                return 5;
-            case "签名":
-                return 6;
-            case "文件":
-                return 7;
-            default:
-                return 0;
-        }
-    }
-
-    private Integer getElementLength(String type) {
-        switch (type) {
-            case "字符串":
-            case "签名":
-            case "文件":
-                return 255;
-            case "整数":
-            case "数值":
-            case "小数":
-                return 20;
-            case "日期":
-            default:
-                return 0;
-        }
-    }
-
-    private Integer getTableType(String tableType) {
-        switch (tableType) {
-            case "检验表":
-                return 1;
-            case "记录表":
-                return 2;
-            case "通用表":
-                return 3;
-            case "监表":
-                return 4;
-            case "评定表":
-                return 5;
-            case "测量表":
-                return 6;
-            case "竣工表":
-                return 7;
-            case "汇总表":
-                return 8;
-            case "试验记录表":
-                return 9;
-            case "试验报告表":
-                return 10;
-            default:
-                return 0;
-        }
-    }
-
     @Override
     public List<WbsNodeTableVO> selectByNodeTable(String id) {
         return wbsTreeMapper.selectByNodeTable(id);
@@ -459,7 +361,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             ArrayList<Map<String, String>> result = excelUtil.readExcelToObj(canonicalPath);
 
             //导入excel
-            return importExcel2(result, wbsTreeFu, wbsTree1);
+            return importExcel(result, wbsTreeFu, wbsTree1);
 
         } catch (Exception e) {
             e.printStackTrace();
@@ -473,7 +375,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         }
     }
 
-    private boolean importExcel2(ArrayList<Map<String, String>> result, WbsTree wbsTreeFu, WbsTree wbsTree1) {
+    private boolean importExcel(ArrayList<Map<String, String>> result, WbsTree wbsTreeFu, WbsTree wbsTree1) {
         List<WbsTree> allNodeData = new ArrayList<>();
         //解析
         int sortNumber = 1;
@@ -676,7 +578,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     @Override
     @Transactional(rollbackFor = Exception.class)
     //@AvoidRepeatableCommit //aop
-    public Boolean submitWbsTreeInProject1(WbsTreeContractDTO pawDTO) {
+    public Boolean submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
         if (StringUtils.isEmpty(pawDTO.getWbsId())) {
             throw new ServiceException("请正确选择一个wbs模板");
         }
@@ -757,7 +659,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 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);
+                List<String> diffRent1 = DiffListUtil.getDiffRent(collect2, collect4);
 
                 //修改公有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
                 updateWbsInfoPrivateAsync(wbsTreeListAll, wbsTreePrivatesAll, pawDTO.getProjectId());
@@ -873,7 +775,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 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);
+                List<String> diffRent1 = DiffListUtil.getDiffRent(collect2, collect4);
 
                 //修改私有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
                 updateWbsInfoContractAsync(wbsTreePrivateAllOld, wbsTreePrivatesAllNow, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
@@ -1102,6 +1004,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 bladeRedis.expire("submit-wbs-project:" + pawDTO.getProjectId(), 60);
             }
         }
+
         return true;
     }
 
@@ -1164,7 +1067,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         String filedType = "";
         String filedLength = "";
         for (WbsFormElement wbsFormElement : formElementDTO.getElementList()) {
-            filedName = getPinyin(wbsFormElement.getEName(), "");
+            filedName = WbsElementUtil.getPinyin(wbsFormElement.getEName(), "");
             filedType = String.valueOf(wbsFormElement.getEType());
             filedLength = String.valueOf(wbsFormElement.getELength());
         }
@@ -1177,9 +1080,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             throw new ServiceException("表名长度错误,输入范围1-100个字符长度");
         }
 
-        //String realName = getFirstSpell(deptName);
-        Long id = SnowFlakeUtil.getId();
-        String newTableName = "m_" + DateUtil.time() + "_" + id;
+        String newTableName = "m_" + DateUtil.time() + "_" + SnowFlakeUtil.getId();
         formElementDTO.setInitTableName(newTableName);
 
         //新增表
@@ -1199,6 +1100,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             if (wbsFormElement.getEType() == 3 && (wbsFormElement.getELength() > 65 || wbsFormElement.getELength() < 10)) {
                 throw new ServiceException("请输入正确的长度,该类型范围为10-65");
             }
+            if (wbsFormElement.getEType() == 4 && (wbsFormElement.getELength() > 50 || wbsFormElement.getELength() < 0)) {
+                throw new ServiceException("请输入正确的长度,该类型范围为0-50");
+            }
 
             wbsFormElement.setEKey("key_" + i++);
             wbsFormElement.setFId(String.valueOf(formElementDTO.getId()));
@@ -1237,70 +1141,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         }
     }
 
-    public static String getFirstSpell(String chinese) {
-        StringBuilder stringBuilder = new StringBuilder();
-        char[] arr = chinese.toCharArray();
-        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
-        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
-        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
-        for (int i = 0; i < arr.length; i++) {
-            if (arr[i] > 128) {
-                try {
-                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
-                    if (temp != null) {
-                        stringBuilder.append(temp[0].charAt(0));
-                    }
-                } catch (BadHanyuPinyinOutputFormatCombination e) {
-                    e.printStackTrace();
-                }
-            } else {
-                stringBuilder.append(arr[i]);
-            }
-        }
-        return stringBuilder.toString().replaceAll("\\W", "").trim();
-    }
-
-    public static String getPinyin(String text, String separator) {
-        //text 文本, separator 转换后添加的分隔符
-        char[] chars = text.toCharArray();
-        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
-
-        // 设置大小写
-        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
-
-        // 设置声调表示方法
-        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
-
-        // 设置字母u表示方法
-        format.setVCharType(HanyuPinyinVCharType.WITH_V);
-        String[] s;
-        String rs = "";
-        try {
-            StringBuilder sb = new StringBuilder();
-            for (int i = 0; i < chars.length; i++) {
-                // 判断是否为汉字字符
-                if (String.valueOf(chars[i]).matches("[\\u4E00-\\u9FA5]+")) {
-                    s = PinyinHelper.toHanyuPinyinStringArray(chars[i], format);
-                    if (s != null) {
-                        sb.append(s[0]).append(separator);
-                        continue;
-                    }
-                }
-
-                sb.append(chars[i]);
-
-                if ((i + 1 >= chars.length) || String.valueOf(chars[i + 1]).matches("[\\u4E00-\\u9FA5]+")) {
-                    sb.append(separator);
-                }
-            }
-
-            rs = sb.substring(0, sb.length());
-        } catch (BadHanyuPinyinOutputFormatCombination e) {
-            e.printStackTrace();
-        }
-        return rs;
-    }
-
     private WbsTreePrivate getWbsTreePrivate1(WbsTree wbsTree, WbsTreeContractDTO pawDTO) {
         WbsTreePrivate wbsTreePrivate = new WbsTreePrivate();
         Long snowId = SnowFlakeUtil.getId();

+ 37 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/unit/DiffListUtil.java

@@ -0,0 +1,37 @@
+package org.springblade.manager.unit;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class DiffListUtil {
+
+    public static List<String> getDiffRent(List<String> list1, List<String> list2) {
+        List<String> diff = new ArrayList<String>();
+        List<String> maxList = list1;
+        List<String> minList = list2;
+        if (list2.size() > list1.size()) {
+            maxList = list2;
+            minList = list1;
+        }
+        Map<String, Integer> map = new HashMap<String, Integer>(maxList.size());
+        for (String string : maxList) {
+            map.put(string, 1);
+        }
+        for (String string : minList) {
+            if (map.get(string) != null) {
+                map.put(string, 2);
+                continue;
+            }
+            diff.add(string);
+        }
+        for (Map.Entry<String, Integer> entry : map.entrySet()) {
+            if (entry.getValue() == 1) {
+                diff.add(entry.getKey());
+            }
+        }
+        return diff;
+    }
+
+}

+ 174 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/unit/WbsElementUtil.java

@@ -0,0 +1,174 @@
+package org.springblade.manager.unit;
+
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
+
+public class WbsElementUtil {
+
+    public static String getPinyin(String text, String separator) {
+        //text 文本, separator 转换后添加的分隔符
+        char[] chars = text.toCharArray();
+        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
+
+        // 设置大小写
+        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+
+        // 设置声调表示方法
+        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+
+        // 设置字母u表示方法
+        format.setVCharType(HanyuPinyinVCharType.WITH_V);
+        String[] s;
+        String rs = "";
+        try {
+            StringBuilder sb = new StringBuilder();
+            for (int i = 0; i < chars.length; i++) {
+                // 判断是否为汉字字符
+                if (String.valueOf(chars[i]).matches("[\\u4E00-\\u9FA5]+")) {
+                    s = PinyinHelper.toHanyuPinyinStringArray(chars[i], format);
+                    if (s != null) {
+                        sb.append(s[0]).append(separator);
+                        continue;
+                    }
+                }
+
+                sb.append(chars[i]);
+
+                if ((i + 1 >= chars.length) || String.valueOf(chars[i + 1]).matches("[\\u4E00-\\u9FA5]+")) {
+                    sb.append(separator);
+                }
+            }
+
+            rs = sb.substring(0, sb.length());
+        } catch (BadHanyuPinyinOutputFormatCombination e) {
+            e.printStackTrace();
+
+        }
+        return rs;
+    }
+
+    public static String setDefaultElementLength(Integer type) {
+        switch (type) {
+            case 1:  //字符串
+            case 7:  //文件
+            case 6:  //签名
+                return "250";
+            case 2:  //整数
+            case 5:  //数值
+            case 3:  //小数
+            case 4:  //日期
+                return "50";
+            default:
+                return "0";
+        }
+    }
+
+    public static Integer getElementLength2(String type) {
+        switch (type) {
+            case "varchar":
+                return 250;
+            case "bigint":
+            case "decimal":
+            case "datetime":
+                return 50;
+            default:
+                return 0;
+        }
+    }
+
+    public static Integer getElementLength(String type) {
+        switch (type) {
+            case "字符串":
+            case "签名":
+            case "文件":
+                return 250;
+            case "整数":
+            case "数值":
+            case "小数":
+            case "日期":
+                return 50;
+            default:
+                return 0;
+        }
+    }
+
+    public static String getInitTableFiledType(Integer type) {
+        switch (type) {
+            case 2:
+                //整数
+                return "bigint";
+            case 3:
+                //小数
+                return "decimal";
+            case 4:
+                //日期
+                return "datetime";
+            case 5:
+                //数值
+                return "decimal";
+            case 6:
+                //签名
+                return "varchar";
+            case 7:
+                //文件
+                return "varchar";
+            case 1:
+            default:
+                //字符串
+                return "varchar";
+        }
+    }
+
+    public static Integer getElementType(String type) {
+        switch (type) {
+            case "字符串":
+                return 1;
+            case "整数":
+                return 2;
+            case "小数":
+                return 3;
+            case "日期":
+                return 4;
+            case "数值":
+                return 5;
+            case "签名":
+                return 6;
+            case "文件":
+                return 7;
+            default:
+                return 0;
+        }
+    }
+
+    public static Integer getTableType(String tableType) {
+        switch (tableType) {
+            case "检验表":
+                return 1;
+            case "记录表":
+                return 2;
+            case "通用表":
+                return 3;
+            case "监表":
+                return 4;
+            case "评定表":
+                return 5;
+            case "测量表":
+                return 6;
+            case "竣工表":
+                return 7;
+            case "汇总表":
+                return 8;
+            case "试验记录表":
+                return 9;
+            case "试验报告表":
+                return 10;
+            default:
+                return 0;
+        }
+    }
+
+}

+ 0 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/UserApplication.java

@@ -33,5 +33,4 @@ public class UserApplication {
 	public static void main(String[] args) {
 		BladeApplication.run(AppConstant.APPLICATION_USER_NAME, UserApplication.class, args);
 	}
-
 }