瀏覽代碼

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

yangyj 2 年之前
父節點
當前提交
295be6f380
共有 20 個文件被更改,包括 277 次插入97 次删除
  1. 1 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ContractLogClient.java
  2. 1 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/InformationQueryClient.java
  3. 2 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/InformationQueryVO.java
  4. 3 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/EVisaConfigClient.java
  5. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractLogController.java
  6. 106 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/EVisaTaskCheckController.java
  7. 1 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ImageClassificationFileController.java
  8. 4 1
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ContractLogClientImpl.java
  9. 2 2
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/InformationQueryClientImpl.java
  10. 9 5
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml
  11. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/IInformationQueryService.java
  12. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ImageClassificationFileServiceImpl.java
  13. 5 5
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java
  14. 12 3
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  15. 7 3
      blade-service/blade-business/src/main/java/org/springblade/business/utils/YearTreeUtils.java
  16. 29 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  17. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FirstController.java
  18. 13 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/EVisaConfigClientImpl.java
  19. 10 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java
  20. 67 69
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

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

@@ -37,6 +37,6 @@ public interface ContractLogClient {
      * 保存日志信息
      * 保存日志信息
      */
      */
     @PostMapping(API_PREFIX + "/saveContractLog")
     @PostMapping(API_PREFIX + "/saveContractLog")
-    void saveContractLog(@RequestBody SaveContractLogVO saveContractLogVO);
+    String saveContractLog(@RequestBody SaveContractLogVO saveContractLogVO);
 
 
 }
 }

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

@@ -34,7 +34,7 @@ public interface InformationQueryClient {
      * @param sourceType 1原生2数据化
      * @param sourceType 1原生2数据化
      */
      */
     @PostMapping(API_PREFIX + "/saveOrUpdateInformationQueryData")
     @PostMapping(API_PREFIX + "/saveOrUpdateInformationQueryData")
-    void saveOrUpdateInformationQueryData(@RequestParam String wbsId,
+    String saveOrUpdateInformationQueryData(@RequestParam String wbsId,
                                           @RequestParam String tableId,
                                           @RequestParam String tableId,
                                           @RequestParam String businessId,
                                           @RequestParam String businessId,
                                           @RequestParam String fileName,
                                           @RequestParam String fileName,

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

@@ -63,6 +63,8 @@ public class InformationQueryVO extends InformationQuery {
 
 
 	private String isFirst;
 	private String isFirst;
 
 
+	private String firstTitle;
+
 	@ApiModelProperty("上报批次")
 	@ApiModelProperty("上报批次")
 	private String reportNumber;
 	private String reportNumber;
 
 

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

@@ -18,6 +18,9 @@ public interface EVisaConfigClient {
      */
      */
     String API_PREFIX = "/api/manager/eVisaConfig";
     String API_PREFIX = "/api/manager/eVisaConfig";
 
 
+    @PostMapping(API_PREFIX + "/queryEVisaConfigAllByTableIds")
+    List<JSONObject> queryEVisaConfigAllByTableIds(@RequestBody List<String> tableIds);
+
     @PostMapping(API_PREFIX + "/queryEVisaConfigByTableIds")
     @PostMapping(API_PREFIX + "/queryEVisaConfigByTableIds")
     List<JSONObject> queryEVisaConfigByTableIds(@RequestBody List<String> tableIds, @RequestParam String contractId, @RequestParam String isFinal);
     List<JSONObject> queryEVisaConfigByTableIds(@RequestBody List<String> tableIds, @RequestParam String contractId, @RequestParam String isFinal);
 
 

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

@@ -104,7 +104,7 @@ public class ContractLogController extends BladeController {
 		//获取填报时间
 		//获取填报时间
 		List<String> recordTimeList = this.contractLogService.queryReportLogTimeTree(contractId, nodePrimaryKeyId);
 		List<String> recordTimeList = this.contractLogService.queryReportLogTimeTree(contractId, nodePrimaryKeyId);
 		//转成结构树
 		//转成结构树
-		return R.data(YearTreeUtils.yearMonthDayTree(recordTimeList));
+		return R.data(YearTreeUtils.yearMonthDayTree(recordTimeList, "ASC"));
 	}
 	}
 
 
 	/**
 	/**

+ 106 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/EVisaTaskCheckController.java

@@ -0,0 +1,106 @@
+package org.springblade.business.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang.StringUtils;
+import org.springblade.business.entity.FixedFlowLink;
+import org.springblade.business.service.IFixedFlowLinkService;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.manager.entity.ContractInfo;
+import org.springblade.manager.entity.SignPfxFile;
+import org.springblade.manager.feign.ContractClient;
+import org.springblade.manager.feign.EVisaConfigClient;
+import org.springblade.manager.feign.SignPfxClient;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/eVisaTaskCheck")
+@Api(value = "所有上报前的相关检查接口", tags = "所有上报前的相关检查接口")
+public class EVisaTaskCheckController {
+
+    private final ContractClient contractClient;
+
+    private final IFixedFlowLinkService fixedFlowLinkService;
+
+    private final EVisaConfigClient eVisaConfigClient;
+
+    private final SignPfxClient signPfxClient;
+
+    /**
+     * 检查当前审批人是否存在证书
+     */
+    @GetMapping("/checkFlowUserIsExistPfxFile")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "检查当前审批人是否存在证书")
+    public R<Boolean> checkTaskUserIsExistPfxFile(){
+        //获取当前审批人的证书
+        List<SignPfxFile> signPfxFiles = this.signPfxClient.querySignPfxByUserIdOrContractId(AuthUtil.getUserId().toString(), "");
+        if(signPfxFiles != null && signPfxFiles.size() > 0){
+            SignPfxFile signPfxFile = signPfxFiles.get(0);
+            if(StringUtils.isEmpty(signPfxFile.getCertificateFileUrl())){
+                return R.data(300, false, "当前用户未配置签字证书,请联系维护人员处理");
+            }
+            if(!new Integer("1").equals(signPfxFile.getIsRegister())){
+                return R.data(300, false, "当前用户的证书未注册,请联系维护人员处理");
+            }
+            if(StringUtils.isEmpty(signPfxFile.getSignatureFileUrl())){
+                return R.data(300, false, "当前用户未配置签字体,请联系维护人员处理");
+            }
+            return R.data(true);
+        }
+        return R.data(300, false, "当前用户未找到签字证书,请联系维护人员处理");
+    }
+
+    /**
+     * 检查所选的流程环节处理人是否具有审批权限
+     */
+    @PostMapping("/checkFlowUserIsEVisaPermissions")
+    @ApiOperation(value = "检查当前合同段是否开启电签")
+    @ApiOperationSupport(order = 2)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "flowId", value = "所选的流程ID", required = true),
+            @ApiImplicitParam(name = "privatePKeyId", value = "表单列表中的isTypePrivatePid字段,集合形式", required = true)
+    })
+    public R<Boolean> checkFlowUserIsEVisaPermissions(@RequestBody JSONObject json){
+        if(json.containsKey("flowId")){
+            //首先找到对应流程下的审批人组
+            List<FixedFlowLink> flowLink = this.fixedFlowLinkService.selectFixedFlowLink(json.getString("flowId"));
+
+            //获取这些人当前合同段下的权限
+            List<Long> linkUserList = flowLink.stream().map(FixedFlowLink::getFixedFlowLinkUser).distinct().collect(Collectors.toList());
+
+            //获取对应表格的所有电签配置
+            List<JSONObject> jsonList = this.eVisaConfigClient.queryEVisaConfigAllByTableIds(json.getJSONArray("privatePKeyId").toJavaList(String.class));
+
+        }
+
+        return null;
+    }
+
+    /**
+     * 检查当前合同段是否开启电签
+     */
+    @GetMapping("/checkContractIsOpenEVisa")
+    @ApiOperation(value = "检查当前合同段是否开启电签")
+    @ApiOperationSupport(order = 1)
+    public R<Boolean> checkContractIsOpenEVisa(@RequestParam String contractId){
+        ContractInfo contract = this.contractClient.getContractById(Func.toLong(contractId));
+        if(contract != null){
+            boolean isOpen = new Integer("1").equals(contract.getIsElectronicSignature());
+            return R.data(isOpen, isOpen ? "当前合同段已经开启电签" : "当前合同段未开启电签,不允许上报,请联系维护人员处理");
+        }
+        return R.data(300, false, "未找到对应合同段");
+    }
+
+}

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

@@ -31,7 +31,6 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.IoUtil;
 import org.springblade.core.tool.utils.IoUtil;
-import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ExcelTab;
 import org.springblade.manager.entity.ExcelTab;
 import org.springblade.manager.entity.ImageClassificationConfig;
 import org.springblade.manager.entity.ImageClassificationConfig;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreeContract;
@@ -178,7 +177,7 @@ public class ImageClassificationFileController extends BladeController {
 											//创建图片
 											//创建图片
 											drawing.createPicture(anchor, workbook.addPicture(CommonUtil.InputStreamToBytes(CommonUtil.getOSSInputStream(urls.get(i))), Workbook.PICTURE_TYPE_PNG));
 											drawing.createPicture(anchor, workbook.addPicture(CommonUtil.InputStreamToBytes(CommonUtil.getOSSInputStream(urls.get(i))), Workbook.PICTURE_TYPE_PNG));
 											//图片定位
 											//图片定位
-											FileUtils.imageOrientation(sheet, anchor, i == 1 ? new DataVO(0, 0) : new DataVO(1, 28));
+											FileUtils.imageOrientation(sheet, anchor, i == 1 ? new DataVO(1, 28) : new DataVO(0, 0));
 
 
 											//定位其它信息
 											//定位其它信息
 											//文字说明
 											//文字说明

+ 4 - 1
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ContractLogClientImpl.java

@@ -82,7 +82,7 @@ public class ContractLogClientImpl implements ContractLogClient {
     }
     }
 
 
     @Override
     @Override
-    public void saveContractLog(SaveContractLogVO saveContractLogVO) {
+    public String saveContractLog(SaveContractLogVO saveContractLogVO) {
         ContractLog contractLog = new ContractLog();
         ContractLog contractLog = new ContractLog();
         //复制数据
         //复制数据
         BeanUtils.copyProperties(saveContractLogVO, contractLog);
         BeanUtils.copyProperties(saveContractLogVO, contractLog);
@@ -108,6 +108,7 @@ public class ContractLogClientImpl implements ContractLogClient {
             //修改数据ID指向
             //修改数据ID指向
             this.contractLogService.update(Wrappers.<ContractLog>lambdaUpdate().set(ContractLog::getDataId, contractLog.getDataId()).eq(ContractLog::getId, logJson.getString("id")));
             this.contractLogService.update(Wrappers.<ContractLog>lambdaUpdate().set(ContractLog::getDataId, contractLog.getDataId()).eq(ContractLog::getId, logJson.getString("id")));
 
 
+            return logJson.getString("id");
         } else {
         } else {
             //获取节点信息
             //获取节点信息
             WbsTreePrivate node =  this.wbsTreePrivateClient.queryByPKeyIds(Func.toStrList(saveContractLogVO.getWbsNodeId().toString())).get(0);
             WbsTreePrivate node =  this.wbsTreePrivateClient.queryByPKeyIds(Func.toStrList(saveContractLogVO.getWbsNodeId().toString())).get(0);
@@ -129,6 +130,8 @@ public class ContractLogClientImpl implements ContractLogClient {
             }
             }
 
 
             this.contractLogService.save(contractLog);
             this.contractLogService.save(contractLog);
+
+            return contractLog.getId().toString();
         }
         }
 
 
     }
     }

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

@@ -22,10 +22,10 @@ public class InformationQueryClientImpl implements InformationQueryClient {
     }
     }
 
 
     @Override
     @Override
-    public void saveOrUpdateInformationQueryData(String wbsId, String tableId,
+    public String saveOrUpdateInformationQueryData(String wbsId, String tableId,
                                                  String businessId, String fileName,
                                                  String businessId, String fileName,
                                                  Integer classify, Integer sourceType,
                                                  Integer classify, Integer sourceType,
                                                  String isFirst, String sourceUrl, String pdfUrl, String firstFileName, List<JSONObject> linkDataList) {
                                                  String isFirst, String sourceUrl, String pdfUrl, String firstFileName, List<JSONObject> linkDataList) {
-        this.iInformationQueryService.saveOrUpdateInformationQueryData(wbsId, tableId, businessId, fileName, classify, sourceType, isFirst, sourceUrl, pdfUrl, firstFileName, linkDataList);
+        return this.iInformationQueryService.saveOrUpdateInformationQueryData(wbsId, tableId, businessId, fileName, classify, sourceType, isFirst, sourceUrl, pdfUrl, firstFileName, linkDataList);
     }
     }
 }
 }

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

@@ -108,7 +108,7 @@
                 CASE
                 CASE
                 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 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 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
+                WHEN querys.nodeStatus NOT LIKE CONCAT('%',1,'%') AND querys.nodeStatus LIKE CONCAT('%',4,'%') AND (querys.nodeStatus NOT LIKE CONCAT('%',2,'%') OR querys.nodeStatus NOT LIKE CONCAT('%',3,'%')) THEN 4
                 ELSE 2 END AS nodeStatus
                 ELSE 2 END AS nodeStatus
             FROM
             FROM
             (
             (
@@ -124,7 +124,7 @@
                 FROM
                 FROM
                     m_wbs_tree_contract AS wtc
                     m_wbs_tree_contract AS wtc
                 LEFT JOIN m_wbs_tree_contract AS wtc1 ON wtc1.ancestors like concat('%', wtc.id, '%') AND wtc1.is_deleted = 0 and wtc1.contract_id = wtc.contract_id AND wtc1.major_data_type IN(1,2,3,4)
                 LEFT JOIN m_wbs_tree_contract AS wtc1 ON wtc1.ancestors like concat('%', wtc.id, '%') AND wtc1.is_deleted = 0 and wtc1.contract_id = wtc.contract_id AND wtc1.major_data_type IN(1,2,3,4)
-                LEFT JOIN u_information_query AS iq ON (iq.wbs_id = wtc1.p_key_id OR iq.wbs_id = wtc.p_key_id) AND classify = #{classify}
+                LEFT JOIN u_information_query AS iq ON (iq.wbs_id = wtc1.p_key_id OR iq.wbs_id = wtc.p_key_id) AND classify = #{classify} AND iq.type != 3
                 WHERE
                 WHERE
                     wtc.contract_id IN
                     wtc.contract_id IN
                 <foreach collection="contractIds" item="contractId" open="(" separator="," close=")">
                 <foreach collection="contractIds" item="contractId" open="(" separator="," close=")">
@@ -132,6 +132,7 @@
                 </foreach>
                 </foreach>
                 and wtc.parent_id = #{parentId}
                 and wtc.parent_id = #{parentId}
                 and wtc.is_deleted= '0'
                 and wtc.is_deleted= '0'
+                AND wtc.node_type != 111
                 group by wtc.p_key_id
                 group by wtc.p_key_id
             ) AS querys
             ) AS querys
         ) AS querys ON wtc.p_key_id = querys.pKeyId
         ) AS querys ON wtc.p_key_id = querys.pKeyId
@@ -183,8 +184,8 @@
                 CASE
                 CASE
                 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 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 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 querys.nodeStatus END AS nodeStatus
+                WHEN querys.nodeStatus NOT LIKE CONCAT('%',1,'%') AND querys.nodeStatus LIKE CONCAT('%',4,'%') AND (querys.nodeStatus NOT LIKE CONCAT('%',2,'%') OR querys.nodeStatus NOT LIKE CONCAT('%',3,'%')) THEN 4
+                ELSE 2 END AS nodeStatus
             FROM
             FROM
             (
             (
                 SELECT
                 SELECT
@@ -200,11 +201,12 @@
                 FROM
                 FROM
                     m_wbs_tree_contract AS wtc
                     m_wbs_tree_contract AS wtc
                 LEFT JOIN m_wbs_tree_contract AS wtc1 ON wtc1.ancestors like concat('%', wtc.id, '%') AND wtc1.is_deleted = 0 and wtc1.contract_id = wtc.contract_id AND wtc1.major_data_type IN(1,2,3,4)
                 LEFT JOIN m_wbs_tree_contract AS wtc1 ON wtc1.ancestors like concat('%', wtc.id, '%') AND wtc1.is_deleted = 0 and wtc1.contract_id = wtc.contract_id AND wtc1.major_data_type IN(1,2,3,4)
-                LEFT JOIN u_information_query AS iq ON (iq.wbs_id = wtc1.p_key_id OR iq.wbs_id = wtc.p_key_id) AND iq.classify = #{classify}
+                LEFT JOIN u_information_query AS iq ON (iq.wbs_id = wtc1.p_key_id OR iq.wbs_id = wtc.p_key_id) AND iq.classify = #{classify} AND iq.type != 3
                 WHERE
                 WHERE
                     wtc.contract_id = #{contractId}
                     wtc.contract_id = #{contractId}
                 and wtc.parent_id = #{parentId}
                 and wtc.parent_id = #{parentId}
                 and wtc.is_deleted= '0'
                 and wtc.is_deleted= '0'
+                AND wtc.node_type != 111
                 AND wtc.type = 1
                 AND wtc.type = 1
                 group by wtc.p_key_id
                 group by wtc.p_key_id
             ) AS querys
             ) AS querys
@@ -372,6 +374,8 @@
             <if test="query.reportNumber != null and query.reportNumber != ''"> and report_number = #{query.reportNumber} </if>
             <if test="query.reportNumber != null and query.reportNumber != ''"> and report_number = #{query.reportNumber} </if>
             <if test="query.fileUserIdAndName != null and query.fileUserIdAndName != ''"> and file_user_id_and_name like concat('%',#{query.fileUserIdAndName},'%') </if>
             <if test="query.fileUserIdAndName != null and query.fileUserIdAndName != ''"> and file_user_id_and_name like concat('%',#{query.fileUserIdAndName},'%') </if>
             <if test="query.queryValue != null and query.queryValue != ''"> and (name like concat('%',#{query.queryValue},'%') OR number like concat('%',#{query.queryValue},'%')) </if>
             <if test="query.queryValue != null and query.queryValue != ''"> and (name like concat('%',#{query.queryValue},'%') OR number like concat('%',#{query.queryValue},'%')) </if>
+            <if test="query.firstTitle != null and query.firstTitle != ''"> and `type` = 3 </if>
+            <if test="query.firstTitle == null or query.firstTitle == ''"> and `type` != 3 </if>
             <if test="query.wbsIds != null">
             <if test="query.wbsIds != null">
                 and wbs_id in
                 and wbs_id in
                 <foreach collection="query.wbsIds" item="wbsIdc" open="(" separator="," close=")">
                 <foreach collection="query.wbsIds" item="wbsIdc" open="(" separator="," close=")">

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

@@ -69,7 +69,7 @@ public interface IInformationQueryService extends BaseService<InformationQuery>
 	 * @param classify 1施工2质检
 	 * @param classify 1施工2质检
 	 * @param sourceType 1原生2数据化
 	 * @param sourceType 1原生2数据化
 	 */
 	 */
-	void saveOrUpdateInformationQueryData(String wbsId, String tableId,
+	String saveOrUpdateInformationQueryData(String wbsId, String tableId,
 										  String businessId, String fileName,
 										  String businessId, String fileName,
 										  Integer classify, Integer sourceType,
 										  Integer classify, Integer sourceType,
 										  String isFirst, String sourceUrl, String pdfUrl, String firstFileName, List<JSONObject> linkDataList);
 										  String isFirst, String sourceUrl, String pdfUrl, String firstFileName, List<JSONObject> linkDataList);

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

@@ -60,7 +60,7 @@ public class ImageClassificationFileServiceImpl extends BaseServiceImpl<ImageCla
 		List<String> yearMonthDayList = new ArrayList<>();
 		List<String> yearMonthDayList = new ArrayList<>();
 		shootingTimes.forEach(date -> yearMonthDayList.add(DateFormatUtils.format(date, "yyyy-MM-dd")));
 		shootingTimes.forEach(date -> yearMonthDayList.add(DateFormatUtils.format(date, "yyyy-MM-dd")));
 		//转成结构树
 		//转成结构树
-		return YearTreeUtils.yearMonthDayTree(yearMonthDayList);
+		return YearTreeUtils.yearMonthDayTree(yearMonthDayList, "DESC");
 	}
 	}
 
 
 	@Override
 	@Override

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

@@ -167,7 +167,7 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 
 
 	}
 	}
 
 
-	private void saveOrUpdateFirstInformationQueryData(String primaryKeyId, String tableId,
+	private String saveOrUpdateFirstInformationQueryData(String primaryKeyId, String tableId,
 													   String businessId, String fileName,
 													   String businessId, String fileName,
 													   Integer classify, Integer sourceType,
 													   Integer classify, Integer sourceType,
 													   String sourceUrl,
 													   String sourceUrl,
@@ -277,13 +277,13 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 
 
 			//保存数据
 			//保存数据
 			this.baseMapper.insert(newData);
 			this.baseMapper.insert(newData);
-
 		}
 		}
 
 
+		return businessId;
 	}
 	}
 
 
 	@Override
 	@Override
-	public void saveOrUpdateInformationQueryData(String primaryKeyId, String tableId,
+	public String saveOrUpdateInformationQueryData(String primaryKeyId, String tableId,
 												 String businessId, String fileName,
 												 String businessId, String fileName,
 												 Integer classify, Integer sourceType,
 												 Integer classify, Integer sourceType,
 												 String isFirst, String sourceUrl,
 												 String isFirst, String sourceUrl,
@@ -291,7 +291,7 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 		BladeUser user = AuthUtil.getUser();
 		BladeUser user = AuthUtil.getUser();
 
 
 		if(StringUtils.isNotEmpty(isFirst) && "true".equals(isFirst)){
 		if(StringUtils.isNotEmpty(isFirst) && "true".equals(isFirst)){
-			this.saveOrUpdateFirstInformationQueryData(primaryKeyId, tableId, businessId, fileName, classify, sourceType, sourceUrl, pdfUrl, firstFileName, linkDataList);
+			return this.saveOrUpdateFirstInformationQueryData(primaryKeyId, tableId, businessId, fileName, classify, sourceType, sourceUrl, pdfUrl, firstFileName, linkDataList);
 		} else {
 		} else {
 			//首先根据wbsId获取合同段ID和项目ID
 			//首先根据wbsId获取合同段ID和项目ID
 			WbsTreeContract contractTree = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(Long.parseLong(primaryKeyId));
 			WbsTreeContract contractTree = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(Long.parseLong(primaryKeyId));
@@ -351,7 +351,7 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 				this.baseMapper.insert(newData);
 				this.baseMapper.insert(newData);
 			}
 			}
 		}
 		}
-
+		return null;
 	}
 	}
 
 
 	@Override
 	@Override

+ 12 - 3
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -673,7 +673,11 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
      * 施工日志等
      * 施工日志等
      */
      */
     private void updateContractLogBusinessDataStatus(String formDataId, Integer status, String newFileUrl){
     private void updateContractLogBusinessDataStatus(String formDataId, Integer status, String newFileUrl){
-        this.contractLogService.update(Wrappers.<ContractLog>lambdaUpdate().set(ContractLog::getStatus, status).set(ContractLog::getEVisaPdfUrl, newFileUrl).in(ContractLog::getId, Arrays.asList(formDataId.split(","))));
+        this.contractLogService.update(Wrappers.<ContractLog>lambdaUpdate().set(ContractLog::getStatus, status)
+                .set(ContractLog::getEVisaPdfUrl, newFileUrl)
+                .set(ContractLog::getAuditUserIdAndName, null)
+                .set(ContractLog::getBatch, null)
+                .in(ContractLog::getId, Arrays.asList(formDataId.split(","))));
         //解锁
         //解锁
         DistributedRedisLock.release(formDataId);
         DistributedRedisLock.release(formDataId);
     }
     }
@@ -682,7 +686,11 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
      * 资料填报
      * 资料填报
      */
      */
     private void updateWriteBusinessDataStatus(String formDataId, Integer status, String newFileUrl){
     private void updateWriteBusinessDataStatus(String formDataId, Integer status, String newFileUrl){
-        this.informationQueryService.update(Wrappers.<InformationQuery>lambdaUpdate().set(InformationQuery::getStatus, status).set(InformationQuery::getEVisaPdfUrl, newFileUrl).in(InformationQuery::getId, Arrays.asList(formDataId.split(","))));
+        this.informationQueryService.update(Wrappers.<InformationQuery>lambdaUpdate().set(InformationQuery::getStatus, status)
+                .set(InformationQuery::getEVisaPdfUrl, newFileUrl)
+                .set(InformationQuery::getReportNumber, null)
+                .set(InformationQuery::getAuditUserIdAndName, null)
+                .in(InformationQuery::getId, Arrays.asList(formDataId.split(","))));
         //解锁
         //解锁
         DistributedRedisLock.release(formDataId);
         DistributedRedisLock.release(formDataId);
     }
     }
@@ -693,7 +701,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
     private void updateArchiveFileBusinessDataStatus(String formDataId, Integer status, String newFileUrl){
     private void updateArchiveFileBusinessDataStatus(String formDataId, Integer status, String newFileUrl){
         LambdaUpdateWrapper<ArchiveFile> wrapper = Wrappers.lambdaUpdate();
         LambdaUpdateWrapper<ArchiveFile> wrapper = Wrappers.lambdaUpdate();
         //更改状态,更改电签文件信息
         //更改状态,更改电签文件信息
-        wrapper.set(ArchiveFile::getStatus, status).set(ArchiveFile::getEVisaFile, newFileUrl);
+        wrapper.set(ArchiveFile::getStatus, status)
+                .set(ArchiveFile::getEVisaFile, newFileUrl);
         this.archiveFileService.update(wrapper.in(ArchiveFile::getId, Arrays.asList(formDataId.split(","))));
         this.archiveFileService.update(wrapper.in(ArchiveFile::getId, Arrays.asList(formDataId.split(","))));
         //解锁
         //解锁
         DistributedRedisLock.release(formDataId);
         DistributedRedisLock.release(formDataId);

+ 7 - 3
blade-service/blade-business/src/main/java/org/springblade/business/utils/YearTreeUtils.java

@@ -6,7 +6,7 @@ import java.util.*;
 
 
 public class YearTreeUtils {
 public class YearTreeUtils {
 
 
-    public static List<TreeVo> yearMonthDayTree(List<String> yearMonthDayList){
+    public static List<TreeVo> yearMonthDayTree(List<String> yearMonthDayList, String sort){
 
 
         //最终集合
         //最终集合
         List<TreeVo> result = new ArrayList<>();
         List<TreeVo> result = new ArrayList<>();
@@ -67,8 +67,12 @@ public class YearTreeUtils {
             TreeVo yearResult = new TreeVo(year, monthResult, year);
             TreeVo yearResult = new TreeVo(year, monthResult, year);
             result.add(yearResult);
             result.add(yearResult);
         }
         }
-        //时间倒序
-        result.sort(Comparator.comparing(TreeVo::getName).reversed());
+
+        if("DESC".equals(sort)){
+            result.sort(Comparator.comparing(TreeVo::getName).reversed());
+        } else {
+            result.sort(Comparator.comparing(TreeVo::getName));
+        }
 
 
         return result;
         return result;
     }
     }

+ 29 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -2231,4 +2231,33 @@ public class ExcelTabController extends BladeController {
         return R.data(300, null, "未找到数据");
         return R.data(300, null, "未找到数据");
     }
     }
 
 
+    @PostMapping("/save_log_first_buss_data")
+    @ApiOperationSupport(order = 29)
+    @ApiOperation(value = "填报页面数据保存", notes = "填报页面数据保存")
+    public R<String> saveLogOrFirstBussData(@Valid @RequestBody JSONObject dataInfo, BladeUser bladeUser) throws Exception {
+        JSONArray dataArray = new JSONArray();
+        if (dataInfo.containsKey("dataInfo")) { // 节点保存
+            JSONObject jsonObject = dataInfo.getJSONObject("dataInfo");
+            dataArray = jsonObject.getJSONArray("orderList");
+        } else { // 单个保存
+            dataArray.add(dataInfo);
+        }
+        List<TableInfo> tableInfoList = this.excelTabService.getTableInfoList(dataArray);
+        try {
+            this.excelTabService.formulaFillData(tableInfoList);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        // 保存数据到数据库
+        String isFirst = tableInfoList.get(0).getIsFirst();
+        if(StringUtils.isNotEmpty(isFirst)){
+            //保存首件
+            return R.data(this.excelTabService.saveOrUpdateFirst(tableInfoList));
+        } else {
+            //保存日志
+            return R.data(this.excelTabService.saveOrUpdateTheLog(tableInfoList));
+        }
+    }
+
 }
 }

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

@@ -168,7 +168,7 @@ public class FirstController extends BladeController {
     @GetMapping("/get-first-buss-pdfInfo")
     @GetMapping("/get-first-buss-pdfInfo")
     @ApiOperationSupport(order = 3)
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "首件-pdf预览", notes = "首件列表ID")
     @ApiOperation(value = "首件-pdf预览", notes = "首件列表ID")
-    @ApiImplicitParam(name = "firstId", value = "pkeyId", required = true)
+    @ApiImplicitParam(name = "firstId", value = "首件ID", required = true)
     public R<String> getBussPdfInfo(String firstId) {
     public R<String> getBussPdfInfo(String firstId) {
         if(StringUtils.isNotEmpty(firstId)){
         if(StringUtils.isNotEmpty(firstId)){
             //PDF路径集合
             //PDF路径集合
@@ -324,7 +324,7 @@ public class FirstController extends BladeController {
                             pdfUrls.add(bladeFile.getLink());
                             pdfUrls.add(bladeFile.getLink());
 
 
                             //将封面的pdf修改
                             //将封面的pdf修改
-                            String updatePdfUrl = "UPDATE u_information_query SET pdf_url = " + bladeFile.getLink() + " WHERE id = " + firstId;
+                            String updatePdfUrl = "UPDATE u_information_query SET pdf_url = '" + bladeFile.getLink() + "' WHERE id = " + firstId;
                             this.jdbcTemplate.execute(updatePdfUrl);
                             this.jdbcTemplate.execute(updatePdfUrl);
 
 
                             wb.dispose();
                             wb.dispose();

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

@@ -1,5 +1,6 @@
 package org.springblade.manager.feign;
 package org.springblade.manager.feign;
 
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
@@ -23,6 +24,18 @@ public class EVisaConfigClientImpl implements EVisaConfigClient {
 
 
     private final SaveUserInfoByProjectService saveUserInfoByProjectService;
     private final SaveUserInfoByProjectService saveUserInfoByProjectService;
 
 
+    @Override
+    public List<JSONObject> queryEVisaConfigAllByTableIds(List<String> tableIds) {
+        //获取所有配置信息
+        List<TextdictInfo> configResult = this.textdictInfoService.list(Wrappers.<TextdictInfo>lambdaQuery().in(TextdictInfo::getTabId, tableIds));
+
+        if(configResult != null && configResult.size() > 0){
+            return JSONArray.parseArray(JSONObject.toJSONString(configResult), JSONObject.class);
+        }
+
+        return null;
+    }
+
     @Override
     @Override
     public List<JSONObject> queryEVisaConfigByTableIds(List<String> tableIds, String contractId, String isFinal) {
     public List<JSONObject> queryEVisaConfigByTableIds(List<String> tableIds, String contractId, String isFinal) {
         List<JSONObject> jsonResult = new ArrayList<>();
         List<JSONObject> jsonResult = new ArrayList<>();

+ 10 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java

@@ -108,4 +108,14 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
 	// 获取用户端 单个表单接口数据
 	// 获取用户端 单个表单接口数据
 	R getBussDataInfo(Long pkeyId);
 	R getBussDataInfo(Long pkeyId);
 
 
+	/**
+	 * 保存 首件数据
+	 */
+	String saveOrUpdateFirst(List<TableInfo> tableInfoList);
+
+	/**
+	 * 保存 日志数据
+	 */
+	String saveOrUpdateTheLog(List<TableInfo> tableInfoList);
+
 }
 }

+ 67 - 69
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -190,6 +190,10 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         if (dataInfo2.containsKey("firstFileName")) {
         if (dataInfo2.containsKey("firstFileName")) {
             tableInfo.setFirstFileName(dataInfo2.getString("firstFileName"));
             tableInfo.setFirstFileName(dataInfo2.getString("firstFileName"));
         }
         }
+        //关联的信息
+        if(dataInfo2.containsKey("linkProcessList")){
+            tableInfo.setLinkProcessList(dataInfo2.getJSONArray("linkProcessList"));
+        }
     }
     }
 
 
     /**
     /**
@@ -348,7 +352,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     /**
     /**
      * 保存日志
      * 保存日志
      */
      */
-    private void saveOrUpdateTheLog(List<TableInfo> tableInfoList) {
+    public String saveOrUpdateTheLog(List<TableInfo> tableInfoList) {
         //查询绑定的节点
         //查询绑定的节点
         WbsTreePrivate tableNode = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, tableInfoList.get(0).getPkeyId()));
         WbsTreePrivate tableNode = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, tableInfoList.get(0).getPkeyId()));
         WbsTreePrivate parentNode = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, tableNode.getProjectId()).eq(WbsTreePrivate::getId, tableNode.getParentId()));
         WbsTreePrivate parentNode = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, tableNode.getProjectId()).eq(WbsTreePrivate::getId, tableNode.getParentId()));
@@ -433,7 +437,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         }
         }
 
 
         //保存日志记录
         //保存日志记录
-        this.contractLogClient.saveContractLog(new SaveContractLogVO(
+        return this.contractLogClient.saveContractLog(new SaveContractLogVO(
                 Long.parseLong(businessId),
                 Long.parseLong(businessId),
                 tableInfoList.get(0).getProjectId(),
                 tableInfoList.get(0).getProjectId(),
                 tableInfoList.get(0).getContractId(),
                 tableInfoList.get(0).getContractId(),
@@ -443,10 +447,12 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 recordTime,
                 recordTime,
                 logWbsList
                 logWbsList
         ));
         ));
-
     }
     }
 
 
-    private void saveOrUpdateFirst(List<TableInfo> tableInfoList) {
+    /**
+     * 保存首件
+     */
+    public String saveOrUpdateFirst(List<TableInfo> tableInfoList) {
         //获取首件绑定的节点
         //获取首件绑定的节点
         String firstNodeId = tableInfoList.get(0).getFirstNodeId();
         String firstNodeId = tableInfoList.get(0).getFirstNodeId();
         //获取首件关联的施工记录
         //获取首件关联的施工记录
@@ -456,13 +462,15 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         }
         }
 
 
         //获取数据所在数据表名
         //获取数据所在数据表名
-        WbsTreeContract table = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, tableInfoList.get(0).getPkeyId()));
+        WbsTreeContract table = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery()
+                .eq(WbsTreeContract::getContractId, tableInfoList.get(0).getContractId())
+                .eq(WbsTreeContract::getTableType, 111));
         if (table == null) {
         if (table == null) {
-            return;
+            return null;
         }
         }
         String tableName = table.getInitTableName();
         String tableName = table.getInitTableName();
         if (StringUtils.isEmpty(tableName)) {
         if (StringUtils.isEmpty(tableName)) {
-            return;
+            return null;
         }
         }
 
 
         //获取首件记录ID
         //获取首件记录ID
@@ -506,88 +514,78 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
 
         try {
         try {
             //新增或修改首件记录
             //新增或修改首件记录
-            this.informationQueryClient.saveOrUpdateInformationQueryData(firstNodeId, tableInfoList.get(0).getPkeyId() + "", firstId, "文件名称", Integer.parseInt(tableInfoList.get(0).getClassify()), 2, "true", sourceUrl, pdfUrl, firstFileName, linkProcessList);
+            return this.informationQueryClient.saveOrUpdateInformationQueryData(firstNodeId, table.getPKeyId() + "", firstId, "文件名称", Integer.parseInt(tableInfoList.get(0).getClassify()), 2, "true", sourceUrl, pdfUrl, firstFileName, linkProcessList);
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
         }
         }
-
+        return null;
     }
     }
 
 
     @Override
     @Override
     public void saveOrUpdateInfo(List<TableInfo> tableInfoList) {
     public void saveOrUpdateInfo(List<TableInfo> tableInfoList) {
         if (ListUtils.isNotEmpty(tableInfoList)) {
         if (ListUtils.isNotEmpty(tableInfoList)) {
-            if (StringUtils.isNotEmpty(tableInfoList.get(0).getIsFirst())) {
-                //首件填报
-                this.saveOrUpdateFirst(tableInfoList);
-
-            } else if (StringUtils.isNotEmpty(tableInfoList.get(0).getIsTheLog())) {
-                //日志填报
-                this.saveOrUpdateTheLog(tableInfoList);
-
-            } else {
-                //施工资料填报
-                for (TableInfo tableInfo : tableInfoList) {
-                    WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getPKeyId, tableInfo.getPkeyId()));
-                    if (wbsTreeContract == null) {
-                        continue;
-                    }
-
-                    String tabName = wbsTreeContract.getInitTableName();
-
-                    // 判读修改还是 添加
-                    String delSql = "delete from " + tabName + " where p_key_id=" + tableInfo.getPkeyId();
-                    jdbcTemplate.execute(delSql);
-
-                    String sqlInfo = "";
-                    LinkedHashMap<String, String> dataMap2 = tableInfo.getDataMap();
-                    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 + ")";
+            //施工资料填报
+            for (TableInfo tableInfo : tableInfoList) {
+                WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+                        .eq(WbsTreeContract::getPKeyId, tableInfo.getPkeyId()));
+                if (wbsTreeContract == null) {
+                    continue;
+                }
 
 
-                    WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId, tableInfo.getContractId()));
+                String tabName = wbsTreeContract.getInitTableName();
 
 
-                    if (wbsTreeContractByP != null) {
-                        //处理文件提名
-                        String fileName = this.wbsParamService.createFileTitle(Func.isNotEmpty(wbsTreeContractByP.getOldId()) ? Long.valueOf(wbsTreeContractByP.getOldId()) : wbsTreeContractByP.getId(), Long.parseLong(wbsTreeContractByP.getContractId()), wbsTreeContractByP);
-                        fileName = StringUtils.isNotEmpty(fileName) ? fileName : "缺少文件提名配置";
+                // 判读修改还是 添加
+                String delSql = "delete from " + tabName + " where p_key_id=" + tableInfo.getPkeyId();
+                jdbcTemplate.execute(delSql);
 
 
-                        //huangjn 保存成功后调用生成资料查询列表数据
-                        this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId() + "", "首件使用字段", "业务ID(主要将来给首件使用)", fileName, Integer.parseInt(tableInfo.getClassify()), 2, "是否是首件(临时,暂时没用到)", "源文件(首件字段)", "pdf文件(首件字段)", "首件上传总结报告名称", new ArrayList<>());
-                    }
-
-                    UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
-                    updateWrapper.in("p_key_id", tableInfo.getPkeyId());
-                    updateWrapper.set("is_tab_pdf", 2);
-                    wbsTreeContractService.update(updateWrapper);
-                    jdbcTemplate.execute(sqlInfo);
-                    // pdf 预览添加
-                    //this.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
+                String sqlInfo = "";
+                LinkedHashMap<String, String> dataMap2 = tableInfo.getDataMap();
+                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 + ")";
 
 
-                try {
-                    //获取节点
-                    WbsTreeContract wbsTreeContract = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, tableInfoList.get(0).getPkeyId()));
+                WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+                        .eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId, tableInfo.getContractId()));
 
 
-                    WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId()));
+                if (wbsTreeContractByP != null) {
                     //处理文件提名
                     //处理文件提名
                     String fileName = this.wbsParamService.createFileTitle(Func.isNotEmpty(wbsTreeContractByP.getOldId()) ? Long.valueOf(wbsTreeContractByP.getOldId()) : wbsTreeContractByP.getId(), Long.parseLong(wbsTreeContractByP.getContractId()), wbsTreeContractByP);
                     String fileName = this.wbsParamService.createFileTitle(Func.isNotEmpty(wbsTreeContractByP.getOldId()) ? Long.valueOf(wbsTreeContractByP.getOldId()) : wbsTreeContractByP.getId(), Long.parseLong(wbsTreeContractByP.getContractId()), wbsTreeContractByP);
                     fileName = StringUtils.isNotEmpty(fileName) ? fileName : "缺少文件提名配置";
                     fileName = StringUtils.isNotEmpty(fileName) ? fileName : "缺少文件提名配置";
 
 
                     //huangjn 保存成功后调用生成资料查询列表数据
                     //huangjn 保存成功后调用生成资料查询列表数据
-                    this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId() + "", "首件使用字段", "业务ID(主要将来给首件使用)", fileName, Integer.parseInt(tableInfoList.get(0).getClassify()), 2, "false", "源文件(首件字段)", "pdf文件(首件字段)", "首件上传总结报告名称", new ArrayList<>());
-                } catch (Exception e) {
-                    e.printStackTrace();
+                    this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId() + "", "首件使用字段", "业务ID(主要将来给首件使用)", fileName, Integer.parseInt(tableInfo.getClassify()), 2, "是否是首件(临时,暂时没用到)", "源文件(首件字段)", "pdf文件(首件字段)", "首件上传总结报告名称", new ArrayList<>());
                 }
                 }
+
+                UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.in("p_key_id", tableInfo.getPkeyId());
+                updateWrapper.set("is_tab_pdf", 2);
+                wbsTreeContractService.update(updateWrapper);
+                jdbcTemplate.execute(sqlInfo);
+                // pdf 预览添加
+                //this.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
+            }
+
+            try {
+                //获取节点
+                WbsTreeContract wbsTreeContract = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, tableInfoList.get(0).getPkeyId()));
+
+                WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+                        .eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId()));
+                //处理文件提名
+                String fileName = this.wbsParamService.createFileTitle(Func.isNotEmpty(wbsTreeContractByP.getOldId()) ? Long.valueOf(wbsTreeContractByP.getOldId()) : wbsTreeContractByP.getId(), Long.parseLong(wbsTreeContractByP.getContractId()), wbsTreeContractByP);
+                fileName = StringUtils.isNotEmpty(fileName) ? fileName : "缺少文件提名配置";
+
+                //huangjn 保存成功后调用生成资料查询列表数据
+                this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId() + "", "首件使用字段", "业务ID(主要将来给首件使用)", fileName, Integer.parseInt(tableInfoList.get(0).getClassify()), 2, "false", "源文件(首件字段)", "pdf文件(首件字段)", "首件上传总结报告名称", new ArrayList<>());
+            } catch (Exception e) {
+                e.printStackTrace();
             }
             }
         }
         }
     }
     }