浏览代码

2024 8 1 号

zhuwei 7 月之前
父节点
当前提交
c35687f0f8
共有 24 个文件被更改,包括 702 次插入143 次删除
  1. 1 1
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 10 0
      blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java
  3. 5 4
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/AliOssBuilder.java
  4. 0 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/BladeOssRuleRe.java
  5. 2 1
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/MinioOssBuilder.java
  6. 67 10
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java
  7. 3 1
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/AliossTemplateRe.java
  8. 392 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/MinioTemplateRe.java
  9. 14 6
      blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/LargeFileEndpoint.java
  10. 1 1
      blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/OssClient.java
  11. 90 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/APIWbsContractNodeHzrcVo.java
  12. 2 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java
  13. 5 0
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/EVisaController.java
  14. 20 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/APIController.java
  15. 2 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  16. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FirstController.java
  17. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  18. 29 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  19. 4 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  20. 3 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  21. 14 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  22. 0 103
      blade-service/blade-manager/src/main/java/org/springblade/manager/utils/test.java
  23. 33 3
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java
  24. 2 2
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

+ 1 - 1
blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java

@@ -79,7 +79,7 @@ public interface LauncherConstant {
 
     /**
      * nacos dev 地址 215==172.31.222.127   192.168.0.109     127.0.0.1  210-=-172.30.224.81
-     * nacos dev 地址 172.31.222.127   192.168.0.109     127.0.0.1    172.30.224.81(39.108.216.210)
+     * nacos dev 地址 172.31.222.127   192.168.0.109     127.0.0.1    172.30.224.81(39.108.216.210) 152.168.2.11
      */
     String NACOS_DEV_ADDR = "127.0.0.1:8848";
 

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

@@ -114,12 +114,16 @@ public class CommonUtil {
      */
     public static synchronized InputStream getOSSInputStream(String urlStr) throws Exception {
         //获取OSS文件流
+        if(urlStr!=null && urlStr.indexOf("183.247.216.148:9000")>=0){// nimio 甬台温 本地部署修改
+            urlStr = urlStr.replace("183.247.216.148:9000","152.168.2.15:9000");
+        }
         URL url =new URL(urlStr);
         final URLConnection conn = url.openConnection();
         conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
         try {
             return conn.getInputStream();
         } catch (Exception e){
+            System.out.println("zw"+urlStr);
             return null;
         }
     }
@@ -523,6 +527,7 @@ public class CommonUtil {
 
         // 压缩图像
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        System.out.println("zw__");
         ImageIO.write(resizedImage, formatName, baos);
 
         if (baos.size() <= sizeLimit) {
@@ -611,6 +616,11 @@ public class CommonUtil {
                 url = url.replace(".aliyuncs.com", "-internal.aliyuncs.com");
             }
         }
+        //本地部署- 甬台温
+        if (url.indexOf("183.247.216.148")>=0) {
+            // 如果当前环境变量不包含linuxtesttest,则替换URL中的oss路径
+            url = url.replace("https","http").replace("183.247.216.148:9000","152.168.2.15:9000");
+        }
         //后续删除
         System.out.println("replaceOssUrl " + url);
         return url;

+ 5 - 4
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/AliOssBuilder.java

@@ -21,6 +21,7 @@ import com.aliyun.oss.OSSClient;
 import com.aliyun.oss.common.auth.CredentialsProvider;
 import com.aliyun.oss.common.auth.DefaultCredentialProvider;
 import lombok.SneakyThrows;
+import org.springblade.core.oss.AliossTemplate;
 import org.springblade.core.oss.OssTemplate;
 import org.springblade.core.oss.props.OssProperties;
 import org.springblade.core.oss.rule.OssRule;
@@ -36,7 +37,7 @@ import org.springblade.resource.entity.Oss;
 public class AliOssBuilder {
 
     @SneakyThrows
-    public static OssTemplateRe template(Oss oss, OssRule ossRule) {
+    public static OssTemplate template(Oss oss, OssRule ossRule) {
         // 创建ClientConfiguration。ClientConfiguration是OSSClient的配置类,可配置代理、连接超时、最大连接数等参数。
         ClientConfiguration conf = new ClientConfiguration();
         // 设置OSSClient允许打开的最大HTTP连接数,默认为1024个。
@@ -52,10 +53,10 @@ public class AliOssBuilder {
         // 设置失败请求重试次数,默认为3次。
         conf.setMaxErrorRetry(5);
         OssProperties ossProperties = new OssProperties();
-        ossProperties.setEndpoint(oss.getEndpoint());
 
+       // ossProperties.setEndpoint(oss.getEndpoint());
         //本地测试1
-      //  ossProperties.setEndpoint("https://oss-cn-hangzhou.aliyuncs.com/");
+        ossProperties.setEndpoint("https://oss-cn-shenzhen.aliyuncs.com/");
 
         ossProperties.setAccessKey(oss.getAccessKey());
         ossProperties.setSecretKey(oss.getSecretKey());
@@ -63,7 +64,7 @@ public class AliOssBuilder {
         CredentialsProvider credentialsProvider = new DefaultCredentialProvider(ossProperties.getAccessKey(), ossProperties.getSecretKey());
         OSSClient ossClient = new OSSClient(ossProperties.getEndpoint(), credentialsProvider, conf);
 
-        return new AliossTemplateRe(ossClient, ossProperties, ossRule);
+        return new AliossTemplate(ossClient, ossProperties, ossRule);
     }
 
 }

+ 0 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/BladeOssRule.java → blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/BladeOssRuleRe.java


+ 2 - 1
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/MinioOssBuilder.java

@@ -22,6 +22,7 @@ import org.springblade.core.oss.OssTemplate;
 import org.springblade.core.oss.MinioTemplate;
 import org.springblade.core.oss.props.OssProperties;
 import org.springblade.core.oss.rule.OssRule;
+import org.springblade.resource.builder.ossre.MinioTemplateRe;
 import org.springblade.resource.entity.Oss;
 
 /**
@@ -42,7 +43,7 @@ public class MinioOssBuilder {
         ossProperties.setAccessKey(oss.getAccessKey());
         ossProperties.setSecretKey(oss.getSecretKey());
         ossProperties.setBucketName(oss.getBucketName());
-        return new MinioTemplate(minioClient, ossRule, ossProperties);
+        return new MinioTemplateRe(minioClient, ossRule, ossProperties);
     }
 
 }

+ 67 - 10
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java

@@ -60,33 +60,36 @@ public class OssBuilder {
     /**
      * OssTemplate配置缓存池
      */
-    private final Map<String, OssTemplateRe> templatePool = new ConcurrentHashMap<>();
+  //  private final Map<String, OssTemplateRe> templatePool = new ConcurrentHashMap<>();
+
+    private final Map<String, OssTemplate> templatePool = new ConcurrentHashMap<>();
 
     /**
      * oss配置缓存池
      */
     private final Map<String, Oss> ossPool = new ConcurrentHashMap<>();
 
+
     /**
      * 获取template
      *
      * @return OssTemplate
      */
-    public OssTemplateRe template() {
+    public OssTemplate template() {
         return template(StringPool.EMPTY);
     }
 
     /**
      * 获取template
      *
-     * @param code 资源编号
+     * @param code 资源编号--minio
      * @return OssTemplate
      */
-    public OssTemplateRe template(String code) {
+    public OssTemplate template(String code) {
         String tenantId = AuthUtil.getTenantId();
         Oss oss = getOss(tenantId, code);
         Oss ossCached = ossPool.get(tenantId);
-        OssTemplateRe template = templatePool.get(tenantId);
+        OssTemplate template = templatePool.get(tenantId);
         // 若为空或者不一致,则重新加载
         if (Func.hasEmpty(template, ossCached) || !oss.getEndpoint().equals(ossCached.getEndpoint()) || !oss.getAccessKey().equals(ossCached.getAccessKey())) {
             synchronized (OssBuilder.class) {
@@ -99,15 +102,16 @@ public class OssBuilder {
                     } else {
                         ossRule = new BladeOssRule(Boolean.FALSE);
                     }
-                    /*if (oss.getCategory() == OssEnum.MINIO.getCategory()) {
+                    //获取对象
+                    if (oss.getCategory() == OssEnum.MINIO.getCategory()) {
                         template = MinioOssBuilder.template(oss, ossRule);
                     } else if (oss.getCategory() == OssEnum.QINIU.getCategory()) {
                         template = QiniuOssBuilder.template(oss, ossRule);
-                    } else if (oss.getCategory() == OssEnum.ALI.getCategory()) {*/
-                    template = AliOssBuilder.template(oss, ossRule);
-                    /*} else if (oss.getCategory() == OssEnum.TENCENT.getCategory()) {
+                    } else if (oss.getCategory() == OssEnum.ALI.getCategory()) {
+                        template = AliOssBuilder.template(oss, ossRule);
+                    } else if (oss.getCategory() == OssEnum.TENCENT.getCategory()) {
                         template = TencentOssBuilder.template(oss, ossRule);
-                    }*/
+                    }
                     templatePool.put(tenantId, template);
                     ossPool.put(tenantId, oss);
                 }
@@ -117,6 +121,59 @@ public class OssBuilder {
         return template;
     }
 
+
+
+    /**
+     * 获取template --阿里云
+     *
+     * @return OssTemplate
+     */
+/*    public OssTemplateRe template() {
+        return template(StringPool.EMPTY);
+    }*/
+
+    /**
+     * 获取template ---- 阿里云
+     *
+     * @param code 资源编号
+     * @return OssTemplate
+     */
+  /*  public OssTemplateRe template(String code) {
+        String tenantId = AuthUtil.getTenantId();
+        Oss oss = getOss(tenantId, code);
+        Oss ossCached = ossPool.get(tenantId);
+        OssTemplateRe template = templatePool.get(tenantId);
+        // 若为空或者不一致,则重新加载
+        if (Func.hasEmpty(template, ossCached) || !oss.getEndpoint().equals(ossCached.getEndpoint()) || !oss.getAccessKey().equals(ossCached.getAccessKey())) {
+            synchronized (OssBuilder.class) {
+                template = templatePool.get(tenantId);
+                if (Func.hasEmpty(template, ossCached) || !oss.getEndpoint().equals(ossCached.getEndpoint()) || !oss.getAccessKey().equals(ossCached.getAccessKey())) {
+                    OssRule ossRule;
+                    // 若采用默认设置则开启多租户模式, 若是用户自定义oss则不开启
+                    if (oss.getEndpoint().equals(ossProperties.getEndpoint()) && oss.getAccessKey().equals(ossProperties.getAccessKey()) && ossProperties.getTenantMode()) {
+                        ossRule = new BladeOssRule(Boolean.TRUE);
+                    } else {
+                        ossRule = new BladeOssRule(Boolean.FALSE);
+                    }
+                    //获取对象
+                   if (oss.getCategory() == OssEnum.MINIO.getCategory()) {
+                        template = MinioOssBuilder.template(oss, ossRule);
+                   } else if (oss.getCategory() == OssEnum.QINIU.getCategory()) {
+                       // template = QiniuOssBuilder.template(oss, ossRule);
+                   } else if (oss.getCategory() == OssEnum.ALI.getCategory()) {
+                        template = AliOssBuilder.template(oss, ossRule);
+                   } else if (oss.getCategory() == OssEnum.TENCENT.getCategory()) {
+                       // template = TencentOssBuilder.template(oss, ossRule);
+                   }
+                    templatePool.put(tenantId, template);
+                    ossPool.put(tenantId, oss);
+                }
+            }
+        }
+
+        return template;
+    }*/
+
     /**
      * 获取对象存储实体
      *

+ 3 - 1
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/AliossTemplateRe.java

@@ -16,6 +16,7 @@ import java.util.Map;
 
 import lombok.SneakyThrows;
 import org.springblade.common.constant.OssConstant;
+import org.springblade.core.oss.OssTemplate;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.oss.model.OssFile;
 import org.springblade.core.oss.props.OssProperties;
@@ -25,7 +26,8 @@ import org.springblade.core.tool.jackson.JsonUtil;
 import org.springframework.util.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
 
-public class AliossTemplateRe implements OssTemplateRe {
+public class AliossTemplateRe implements OssTemplate {
+
     private final OSSClient ossClient;
     private final OssProperties ossProperties;
     private final OssRule ossRule;

+ 392 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/MinioTemplateRe.java

@@ -0,0 +1,392 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package org.springblade.resource.builder.ossre;
+
+import io.minio.BucketExistsArgs;
+import io.minio.CopyObjectArgs;
+import io.minio.CopySource;
+import io.minio.GetPresignedObjectUrlArgs;
+import io.minio.MakeBucketArgs;
+import io.minio.MinioClient;
+import io.minio.PutObjectArgs;
+import io.minio.RemoveBucketArgs;
+import io.minio.RemoveObjectArgs;
+import io.minio.RemoveObjectsArgs;
+import io.minio.SetBucketPolicyArgs;
+import io.minio.StatObjectArgs;
+import io.minio.StatObjectResponse;
+import io.minio.http.Method;
+import io.minio.messages.Bucket;
+import io.minio.messages.DeleteObject;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Stream;
+
+import lombok.SneakyThrows;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.core.oss.enums.PolicyType;
+import org.springblade.core.oss.model.BladeFile;
+import org.springblade.core.oss.model.OssFile;
+import org.springblade.core.oss.props.OssProperties;
+import org.springblade.core.oss.rule.OssRule;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.multipart.MultipartFile;
+
+public class MinioTemplateRe implements OssTemplate {
+
+    private final MinioClient client;
+    private final OssRule ossRule;
+    private final OssProperties ossProperties;
+
+    @SneakyThrows
+    public void makeBucket(String bucketName) {
+        try {
+            if (!this.client.bucketExists((BucketExistsArgs)((BucketExistsArgs.Builder)BucketExistsArgs.builder().bucket(this.getBucketName(bucketName))).build())) {
+                this.client.makeBucket((MakeBucketArgs)((MakeBucketArgs.Builder)MakeBucketArgs.builder().bucket(this.getBucketName(bucketName))).build());
+                this.client.setBucketPolicy((SetBucketPolicyArgs)((SetBucketPolicyArgs.Builder)SetBucketPolicyArgs.builder().bucket(this.getBucketName(bucketName))).config(getPolicyType(this.getBucketName(bucketName), PolicyType.READ)).build());
+            }
+
+        } catch (Throwable var3) {
+            throw var3;
+        }
+    }
+
+    public Bucket getBucket() {
+        try {
+            return this.getBucket(this.getBucketName());
+        } catch (Throwable var2) {
+            throw var2;
+        }
+    }
+
+    @SneakyThrows
+    public Bucket getBucket(String bucketName) {
+        try {
+            Optional<Bucket> bucketOptional = this.client.listBuckets().stream().filter((bucket) -> {
+                return bucket.name().equals(this.getBucketName(bucketName));
+            }).findFirst();
+            return (Bucket)bucketOptional.orElse(null);
+        } catch (Throwable var3) {
+            throw var3;
+        }
+    }
+
+    @SneakyThrows
+    public List<Bucket> listBuckets() {
+        try {
+            return this.client.listBuckets();
+        } catch (Throwable var2) {
+            throw var2;
+        }
+    }
+
+    @SneakyThrows
+    public void removeBucket(String bucketName) {
+        try {
+            this.client.removeBucket((RemoveBucketArgs)((RemoveBucketArgs.Builder)RemoveBucketArgs.builder().bucket(this.getBucketName(bucketName))).build());
+        } catch (Throwable var3) {
+            throw var3;
+        }
+    }
+
+    @SneakyThrows
+    public boolean bucketExists(String bucketName) {
+        try {
+            return this.client.bucketExists((BucketExistsArgs)((BucketExistsArgs.Builder)BucketExistsArgs.builder().bucket(this.getBucketName(bucketName))).build());
+        } catch (Throwable var3) {
+            throw var3;
+        }
+    }
+
+    public void copyFile(String bucketName, String fileName, String destBucketName) {
+        try {
+            this.copyFile(bucketName, fileName, destBucketName, fileName);
+        } catch (Throwable var5) {
+            throw var5;
+        }
+    }
+
+    @SneakyThrows
+    public void copyFile(String bucketName, String fileName, String destBucketName, String destFileName) {
+        try {
+            this.client.copyObject((CopyObjectArgs)((CopyObjectArgs.Builder)((CopyObjectArgs.Builder)CopyObjectArgs.builder().source((CopySource)((CopySource.Builder)((CopySource.Builder)CopySource.builder().bucket(this.getBucketName(bucketName))).object(fileName)).build()).bucket(this.getBucketName(destBucketName))).object(destFileName)).build());
+        } catch (Throwable var6) {
+            throw var6;
+        }
+    }
+
+    public OssFile statFile(String fileName) {
+        try {
+            return this.statFile(this.ossProperties.getBucketName(), fileName);
+        } catch (Throwable var3) {
+            throw var3;
+        }
+    }
+
+    @SneakyThrows
+    public OssFile statFile(String bucketName, String fileName) {
+        try {
+            StatObjectResponse stat = this.client.statObject((StatObjectArgs)((StatObjectArgs.Builder)((StatObjectArgs.Builder)StatObjectArgs.builder().bucket(this.getBucketName(bucketName))).object(fileName)).build());
+            OssFile ossFile = new OssFile();
+            ossFile.setName(Func.isEmpty(stat.object()) ? fileName : stat.object());
+            ossFile.setLink(this.fileLink(ossFile.getName()));
+            ossFile.setHash(String.valueOf(stat.hashCode()));
+            ossFile.setLength(stat.size());
+            ossFile.setPutTime(DateUtil.toDate(stat.lastModified().toLocalDateTime()));
+            ossFile.setContentType(stat.contentType());
+            return ossFile;
+        } catch (Throwable var5) {
+            throw var5;
+        }
+    }
+
+    public String filePath(String fileName) {
+        return this.getBucketName().concat("/").concat(fileName);
+    }
+
+    public String filePath(String bucketName, String fileName) {
+        return this.getBucketName(bucketName).concat("/").concat(fileName);
+    }
+
+    public String fileLink(String fileName) {
+        try {
+            return this.ossProperties.getEndpoint().concat("/").concat(this.getBucketName()).concat("/").concat(fileName);
+        } catch (Throwable var3) {
+            throw var3;
+        }
+    }
+
+    public String fileLink(String bucketName, String fileName) {
+        try {
+            String fileUrl = this.ossProperties.getEndpoint().concat("/").concat(this.getBucketName(bucketName)).concat("/").concat(fileName);
+            if (fileUrl.indexOf("152.168.2.15") >= 0) {
+                fileUrl = fileUrl.replaceAll("152.168.2.15", "183.247.216.148").replace(":9000//",":9000/");
+            }
+            return  fileUrl;
+        } catch (Throwable var4) {
+            throw var4;
+        }
+    }
+
+    public BladeFile putFile(MultipartFile file) {
+        try {
+            return this.putFile(this.ossProperties.getBucketName(), file.getOriginalFilename(), file);
+        } catch (Throwable var3) {
+            throw var3;
+        }
+    }
+
+    public BladeFile putFile(String fileName, MultipartFile file) {
+        try {
+            return this.putFile(this.ossProperties.getBucketName(), fileName, file);
+        } catch (Throwable var4) {
+            throw var4;
+        }
+    }
+
+    @SneakyThrows
+    public BladeFile putFile(String bucketName, String fileName, MultipartFile file) {
+        try {
+            return this.putFile(bucketName, file.getOriginalFilename(), file.getInputStream());
+        } catch (Throwable var5) {
+            throw var5;
+        }
+    }
+
+    public BladeFile putFile(String fileName, InputStream stream) {
+        try {
+            return this.putFile(this.ossProperties.getBucketName(), fileName, stream);
+        } catch (Throwable var4) {
+            throw var4;
+        }
+    }
+
+    public BladeFile putFile(String bucketName, String fileName, InputStream stream) {
+        try {
+            return this.putFile(bucketName, fileName, stream, "application/octet-stream");
+        } catch (Throwable var5) {
+            throw var5;
+        }
+    }
+
+    @SneakyThrows
+    public BladeFile putFile(String bucketName, String fileName, InputStream stream, String contentType) {
+        try {
+            this.makeBucket(bucketName);
+            String originalName = fileName;
+            fileName = this.getFileName(fileName);
+            this.client.putObject((PutObjectArgs)((PutObjectArgs.Builder)((PutObjectArgs.Builder)PutObjectArgs.builder().bucket(this.getBucketName(bucketName))).object(fileName)).stream(stream, (long)stream.available(), -1L).contentType(contentType).build());
+            BladeFile file = new BladeFile();
+            file.setOriginalName(originalName);
+            file.setName(fileName);
+            file.setDomain(this.getOssHost(bucketName));
+            file.setLink(this.fileLink(bucketName, fileName));
+            return file;
+        } catch (Throwable var7) {
+            throw var7;
+        }
+    }
+
+    public void removeFile(String fileName) {
+        try {
+            this.removeFile(this.ossProperties.getBucketName(), fileName);
+        } catch (Throwable var3) {
+            throw var3;
+        }
+    }
+
+    @SneakyThrows
+    public void removeFile(String bucketName, String fileName) {
+        try {
+            this.client.removeObject((RemoveObjectArgs)((RemoveObjectArgs.Builder)((RemoveObjectArgs.Builder)RemoveObjectArgs.builder().bucket(this.getBucketName(bucketName))).object(fileName)).build());
+        } catch (Throwable var4) {
+            throw var4;
+        }
+    }
+
+    public void removeFiles(List<String> fileNames) {
+        try {
+            this.removeFiles(this.ossProperties.getBucketName(), fileNames);
+        } catch (Throwable var3) {
+            throw var3;
+        }
+    }
+
+    public void removeFiles(String bucketName, List<String> fileNames) {
+        try {
+            Stream<DeleteObject> stream = fileNames.stream().map(DeleteObject::new);
+            MinioClient var10000 = this.client;
+            RemoveObjectsArgs.Builder var10001 = (RemoveObjectsArgs.Builder)RemoveObjectsArgs.builder().bucket(this.getBucketName(bucketName));
+            stream.getClass();
+            var10000.removeObjects((RemoveObjectsArgs)var10001.objects(stream::iterator).build());
+        } catch (Throwable var4) {
+            throw var4;
+        }
+    }
+
+    private String getBucketName() {
+        return this.getBucketName(this.ossProperties.getBucketName());
+    }
+
+    private String getBucketName(String bucketName) {
+        return this.ossRule.bucketName(bucketName);
+    }
+
+    private String getFileName(String originalFilename) {
+        return this.ossRule.fileName(originalFilename);
+    }
+
+    @SneakyThrows
+    public String getPresignedObjectUrl(String bucketName, String fileName, Integer expires) {
+        try {
+            return this.client.getPresignedObjectUrl((GetPresignedObjectUrlArgs)((GetPresignedObjectUrlArgs.Builder)((GetPresignedObjectUrlArgs.Builder)GetPresignedObjectUrlArgs.builder().method(Method.GET).bucket(this.getBucketName(bucketName))).object(fileName)).expiry(expires).build());
+        } catch (Throwable var5) {
+            throw var5;
+        }
+    }
+
+    public String getPolicyType(PolicyType policyType) {
+        return getPolicyType(this.getBucketName(), policyType);
+    }
+
+    public static String getPolicyType(String bucketName, PolicyType policyType) {
+        StringBuilder builder = new StringBuilder();
+        builder.append("{\n");
+        builder.append("    \"Statement\": [\n");
+        builder.append("        {\n");
+        builder.append("            \"Action\": [\n");
+        switch (policyType) {
+            case WRITE:
+                builder.append("                \"s3:GetBucketLocation\",\n");
+                builder.append("                \"s3:ListBucketMultipartUploads\"\n");
+                break;
+            case READ_WRITE:
+                builder.append("                \"s3:GetBucketLocation\",\n");
+                builder.append("                \"s3:ListBucket\",\n");
+                builder.append("                \"s3:ListBucketMultipartUploads\"\n");
+                break;
+            default:
+                builder.append("                \"s3:GetBucketLocation\"\n");
+        }
+
+        builder.append("            ],\n");
+        builder.append("            \"Effect\": \"Allow\",\n");
+        builder.append("            \"Principal\": \"*\",\n");
+        builder.append("            \"Resource\": \"arn:aws:s3:::");
+        builder.append(bucketName);
+        builder.append("\"\n");
+        builder.append("        },\n");
+        if (PolicyType.READ.equals(policyType)) {
+            builder.append("        {\n");
+            builder.append("            \"Action\": [\n");
+            builder.append("                \"s3:ListBucket\"\n");
+            builder.append("            ],\n");
+            builder.append("            \"Effect\": \"Deny\",\n");
+            builder.append("            \"Principal\": \"*\",\n");
+            builder.append("            \"Resource\": \"arn:aws:s3:::");
+            builder.append(bucketName);
+            builder.append("\"\n");
+            builder.append("        },\n");
+        }
+
+        builder.append("        {\n");
+        builder.append("            \"Action\": ");
+        switch (policyType) {
+            case WRITE:
+                builder.append("[\n");
+                builder.append("                \"s3:AbortMultipartUpload\",\n");
+                builder.append("                \"s3:DeleteObject\",\n");
+                builder.append("                \"s3:ListMultipartUploadParts\",\n");
+                builder.append("                \"s3:PutObject\"\n");
+                builder.append("            ],\n");
+                break;
+            case READ_WRITE:
+                builder.append("[\n");
+                builder.append("                \"s3:AbortMultipartUpload\",\n");
+                builder.append("                \"s3:DeleteObject\",\n");
+                builder.append("                \"s3:GetObject\",\n");
+                builder.append("                \"s3:ListMultipartUploadParts\",\n");
+                builder.append("                \"s3:PutObject\"\n");
+                builder.append("            ],\n");
+                break;
+            default:
+                builder.append("\"s3:GetObject\",\n");
+        }
+
+        builder.append("            \"Effect\": \"Allow\",\n");
+        builder.append("            \"Principal\": \"*\",\n");
+        builder.append("            \"Resource\": \"arn:aws:s3:::");
+        builder.append(bucketName);
+        builder.append("/*\"\n");
+        builder.append("        }\n");
+        builder.append("    ],\n");
+        builder.append("    \"Version\": \"2012-10-17\"\n");
+        builder.append("}\n");
+        return builder.toString();
+    }
+
+    public String getOssHost(String bucketName) {
+        String prefix = this.ossProperties.getEndpoint().contains("https://") ? "https://" : "http://";
+        if (this.ossProperties.getEndpoint().indexOf("152.168.2.15") >= 0) {
+            String fileUrl =  prefix + this.getBucketName(bucketName) + "." + this.ossProperties.getEndpoint().replaceAll("152.168.2.15", "183.247.216.148").replaceFirst(prefix, "");
+            return fileUrl;
+        } else {
+            return prefix + this.getBucketName(bucketName) + "." + this.ossProperties.getEndpoint().replaceFirst(prefix, "");
+        }
+    }
+
+    public String getOssHost() {
+        return this.getOssHost(this.ossProperties.getBucketName());
+    }
+
+    public MinioTemplateRe(final MinioClient client, final OssRule ossRule, final OssProperties ossProperties) {
+        this.client = client;
+        this.ossRule = ossRule;
+        this.ossProperties = ossProperties;
+    }
+}

+ 14 - 6
blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/LargeFileEndpoint.java

@@ -127,11 +127,14 @@ public class LargeFileEndpoint {
         return R.success("删除成功");
     }
 
+/*
 
-    /**
+    */
+/**
      * @return
      * @throws Exception
-     **/
+     **//*
+
     @SneakyThrows
     @PostMapping("/upload-file1234")
     public R uploadByfile123(@RequestParam(value = "file", required = false) MultipartFile file,
@@ -196,9 +199,11 @@ public class LargeFileEndpoint {
         return R.data("");
     }
 
-    /**
+    */
+/**
      * 分块上传完成获取结果
-     */
+     *//*
+
     public String completePartUploadFile(String fileKey, String uploadId, List<PartETag> partETags) {
         CompleteMultipartUploadRequest request = new CompleteMultipartUploadRequest(bucketName, fileKey, uploadId,
                 partETags);
@@ -207,13 +212,15 @@ public class LargeFileEndpoint {
         return downLoadUrl;
     }
 
-    /**
+    */
+/**
      * 获取bucket文件的下载链接
      *
      * @param pathFile   首字母不带/的路径和文件
      * @param bucketName
      * @return 上报返回null, 成功返回地址
-     */
+     *//*
+
     public String getDownloadUrl(String pathFile, String bucketName) {
         if (bucketName == null || "".equals(bucketName)) {
             bucketName = bucketName;
@@ -235,6 +242,7 @@ public class LargeFileEndpoint {
         return uploadId;
     }
 
+*/
 
     /**
      * @return

+ 1 - 1
blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/OssClient.java

@@ -50,7 +50,7 @@ public class OssClient implements IOSSClient {
 
     @Override
     public Long getAllFileSizeByFileUrl(String fileUrl) {
-        return ossBuilder.template().getAllFileSizeByFileUrl(fileUrl);
+        return 0L; //ossBuilder.template().getAllFileSizeByFileUrl(fileUrl);
     }
 
 

+ 90 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/APIWbsContractNodeHzrcVo.java

@@ -0,0 +1,90 @@
+/*
+ *      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 com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 视图实体类
+ *
+ * @author Chill
+ */
+@Data
+@ApiModel(value = "APIWbsContractNodeVo对象", description = "APIWbsContractNodeVo对象")
+public class APIWbsContractNodeHzrcVo implements INode<APIWbsContractNodeHzrcVo> {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty("主键Id")
+    private Long pkeyId;
+
+    @ApiModelProperty("id")
+    private Long id;
+
+    @ApiModelProperty("父Id")
+    private Long parentId;
+
+    @ApiModelProperty("节点名称")
+    private String nodeName;
+
+    @ApiModelProperty("是否允许计量")
+    private Integer isMea;
+
+    @ApiModelProperty("文件路径")
+    private String fileUrl;
+
+    @ApiModelProperty("划分编号")
+    private String partitionCode;
+
+    @ApiModelProperty("状态,1待审批,2已审批,3废除")
+    private String taskStatus;
+
+    /**
+     * 子孙节点
+     */
+    @ApiModelProperty("子节点集合")
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<APIWbsContractNodeHzrcVo> children;
+
+    /**
+     * 是否有子孙节点
+     */
+    @ApiModelProperty("是否有子孙节点")
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private Boolean hasChildren;
+
+    @Override
+    public List<APIWbsContractNodeHzrcVo> getChildren() {
+        if (this.children == null) {
+            this.children = new ArrayList<>();
+        }
+        return this.children;
+    }
+
+}

+ 2 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java

@@ -621,8 +621,8 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
 
                     String myData = DataInfo.get(val) + "";
 
-                    //https:bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
-                    if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
+
+                    if (myData.indexOf("http") >= 0 && (myData.indexOf("aliyuncs") >= 0 ||myData.indexOf("183.247.216.148") >= 0)) {
 
                         InputStream imageIn = CommonUtil.getOSSInputStream(myData);
                         byte[] bytes = IOUtils.toByteArray(imageIn);

+ 5 - 0
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/EVisaController.java

@@ -192,6 +192,11 @@ public class EVisaController {
             jdbcTemplate.execute(up_task);
             jdbcTemplate.execute("update u_information_query set e_visa_pdf_url='',status=0 where id='"+taskApprovalVO.getFormDataId()+"'");
             RedisTemplate.delete("sign-" + taskApprovalVO.getFormDataId());
+
+            //委托单
+            if (taskApprovalVO.getApprovalType()==8) {
+                this.jdbcTemplate.execute("update u_entrust_info set status=1 where id=(SELECT wbs_id from u_information_query where id='"+taskApprovalVO.getFormDataId()+"')");
+            }
         }
     }
 

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

@@ -10,6 +10,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.manager.service.IWbsTreeContractService;
+import org.springblade.manager.vo.APIWbsContractNodeHzrcVo;
 import org.springblade.manager.vo.APIWbsContractNodeVo;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
@@ -44,7 +45,7 @@ public class APIController extends BladeController {
     }
 
     /**
-     *  获取合同段tree信息
+     *  获取合同段tree信息 -甬台温
      */
     @GetMapping("/tree")
     @ApiOperationSupport(order = 3)
@@ -59,4 +60,22 @@ public class APIController extends BladeController {
         }
         return R.fail(200, "未查询到信息");
     }
+
+    /**
+     *  获取合同段tree信息 -湖州绕城
+     */
+    @GetMapping("/tree_hzrc")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "获取合同段tree信息", notes = "合同")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "contractId", value = "合同段Id", required = true),
+            @ApiImplicitParam(name = "classType", value = "1施工2监理", required = true)
+    })
+    public R<List<APIWbsContractNodeHzrcVo>> treeHzrc(String contractId,Integer classType) {
+        List<APIWbsContractNodeHzrcVo> tree = iWbsTreeContractService.apiTreeNodeHzrc(contractId,classType);
+        if (tree != null && tree.size() > 0) {
+            return R.data(tree);
+        }
+        return R.fail(200, "未查询到信息");
+    }
 }

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

@@ -2395,7 +2395,7 @@ public class ExcelTabController extends BladeController {
                                                 }
                                             }
 
-                                            if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
+                                            if (myData.indexOf("http") >= 0 && (myData.indexOf("aliyuncs") >= 0 ||myData.indexOf("183.247.216.148") >= 0)) {
                                                 Element element = trs.get(y1).select("td").get(x1);
                                                 String[] styles = element.attr("style").split(";");
                                                 int Height = 0;
@@ -2493,9 +2493,7 @@ public class ExcelTabController extends BladeController {
                     if (oldMergePdf.exists()) {
                         oldMergePdf.delete();
                     }
-
                     FileUtils.mergePdfPublicMethods(pdfUrls, mergePdfPath);
-
                     BladeFile mergeFile = this.newIOSSClient.uploadFile(SnowFlakeUtil.getId() + new Date().getTime() + ".pdf", mergePdfPath);
 
                     //修改记录,当天的日志所有表的合并pdf都一样,即ids都修改成一样的
@@ -3147,7 +3145,7 @@ public class ExcelTabController extends BladeController {
                                                         }
                                                     }
 
-                                                    if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
+                                                    if (myData.indexOf("http") >= 0 && (myData.indexOf("aliyuncs") >= 0 ||myData.indexOf("183.247.216.148") >= 0)) {
                                                         Element element = trs.get(y1).select("td").get(x1);
                                                         String[] styles = element.attr("style").split(";");
                                                         int Height = 0;

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

@@ -304,7 +304,7 @@ public class FirstController extends BladeController {
 //                                                        }
 //                                                    }
 
-                                                    if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
+                                                    if (myData.indexOf("http") >= 0 && (myData.indexOf("aliyuncs") >= 0 ||myData.indexOf("183.247.216.148") >= 0)) {
                                                         Element element = trs.get(y1).select("td").get(x1);
                                                         String[] styles = element.attr("style").split(";");
                                                         int Height = 0;

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

@@ -110,4 +110,6 @@ public interface WbsTreeContractMapper extends EasyBaseMapper<WbsTreeContract> {
     void tableSort(@Param("map") Map<Long, Integer> map);
 
     List<APIWbsContractNodeVo> apiTreeNode(@Param("contractId") String contractId);
+
+    List<APIWbsContractNodeHzrcVo> apiTreeNodeHzrc(@Param("contractId") String contractId,@Param("classType") Integer classType);
 }

+ 29 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -143,6 +143,18 @@
         <result column="has_children" property="hasChildren"/>
     </resultMap>
 
+    <resultMap id="apiTreeNodeHzrcResultMap" type="org.springblade.manager.vo.APIWbsContractNodeHzrcVo">
+        <id column="id" property="id"/>
+        <result column="p_key_id" property="pkeyId"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="node_name" property="nodeName"/>
+        <result column="isMea" property="isMea"/>
+        <result column="fileUrl" property="fileUrl"/>
+        <result column="has_children" property="hasChildren"/>
+        <result column="taskStatus" property="taskStatus"/>
+        <result column="partitionCode" property="partitionCode"/>
+    </resultMap>
+
 
     <insert id="insertByCondition">
         INSERT INTO m_wbs_tree_contract(p_key_id, id, wbs_id, wbs_type, project_id, contract_id, contract_type,
@@ -831,4 +843,21 @@
         and contract_id = #{contractId}
         ORDER BY type,sort
     </select>
+
+    <select id="apiTreeNodeHzrc" resultMap="apiTreeNodeHzrcResultMap">
+        select distinct a.p_key_id , a.id , a.parent_id , a.node_name ,1 as isMea, b.e_visa_pdf_url as fileUrl,
+                        (SELECT count(1) from u_task a ,u_task_parallel b,m_project_assignment_user c  where a.process_instance_id = b.process_instance_id and b.task_user = c.user_id and c.role_id in(
+                            SELECT id from blade_role where role_name like  '监理员%' and is_deleted=0) and c.contract_id=#{contractId} and a.form_data_id=b.id)
+                        AS isMea,
+                        a.partition_Code as partitionCode,
+                        b.taskStatus
+        from m_wbs_tree_contract a LEFT JOIN (SELECT c.*,d.`status` as taskStatus from u_information_query c,u_task d where d.form_data_id=c.id and  c.contract_id = 1792766434089168898 and c.classify = 2)  b on a.p_key_id = b.wbs_id
+        where
+            a.is_deleted = 0
+          and a.status = 1
+          and a.wbs_type = 1
+          and a.type=1
+          and a.contract_id = #{contractId}
+        ORDER BY a.type,a.sort
+    </select>
 </mapper>

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

@@ -69,5 +69,9 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     List<WbsTreeContractLazyVO> getConcealedWorksNodeTree(String contractId, String parentId);
 
+    //获取质检 wbs -甬台温
     List<APIWbsContractNodeVo> apiTreeNode(String contractId);
+
+    //获取质检 wbs -湖州绕城
+    List<APIWbsContractNodeHzrcVo> apiTreeNodeHzrc(String contractId,Integer classType);
 }

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

@@ -2079,7 +2079,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                                 }
                             }
 
-                            if ((myData.indexOf("https") >= 0 || myData.indexOf("http") >= 0) && myData.indexOf("aliyuncs") >= 0) {
+                            if (myData.indexOf("http") >= 0 && (myData.indexOf("aliyuncs") >= 0 ||myData.indexOf("183.247.216.148") >= 0) ) {
 
                                 InputStream imageIn = CommonUtil.getOSSInputStream(myData);
                                 if (imageIn != null) {
@@ -3558,7 +3558,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                                     }
                                 }
 
-                                if ((myData.indexOf("https") >= 0 || myData.indexOf("http") >= 0) && myData.indexOf("aliyuncs") >= 0) {
+                                if (myData.indexOf("http") >= 0 && (myData.indexOf("aliyuncs") >= 0 ||myData.indexOf("183.247.216.148") >= 0)) {
 
                                     InputStream imageIn = CommonUtil.getOSSInputStream(myData);
                                     byte[] byteNew = IOUtils.toByteArray(imageIn);
@@ -4149,7 +4149,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
                                             Font redFont = workbook.createFont();
                                             redFont.setColor(IndexedColors.WHITE.getIndex()); //设置字体颜色
-                                            redFont.setFontHeightInPoints(oldfontAt.getFontHeightInPoints());//设置字体大小
+                                            redFont.setFontHeightInPoints(Short.valueOf("1"));//设置字体大小
                                             redFont.setFontName(oldfontAt.getFontName());//设置字体
 
                                             CellStyle newStyle = workbook.createCellStyle(); //创建单元格样式

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

@@ -1075,11 +1075,25 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         return null;
     }
 
+    /**
+     * 获取质检wbs-all 甬台温
+     * @param contractId
+     * @return
+     */
     @Override
     public List<APIWbsContractNodeVo> apiTreeNode(String contractId) {
         return ForestNodeMerger.merge(baseMapper.apiTreeNode(contractId));
     }
 
+    /**
+     * 获取质检wbs-all 湖州绕城
+     * @param contractId
+     * @return
+     */
+    @Override
+    public List<APIWbsContractNodeHzrcVo> apiTreeNodeHzrc(String contractId,Integer classType) {
+        return ForestNodeMerger.merge(baseMapper.apiTreeNodeHzrc(contractId,classType));
+    }
 
     /**
      * 递归获取隐蔽工程节点的所有父级节点

+ 0 - 103
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/test.java

@@ -1,103 +0,0 @@
-package org.springblade.manager.utils;
-
-
-import com.spire.xls.Workbook;
-import com.spire.xls.Worksheet;
-import com.spire.xls.core.spreadsheet.HTMLOptions;
-import org.springblade.common.utils.CommonUtil;
-
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-
-public class test {
-
-/*
-    public static void main(String[] args) {
-        String excUrl = "/Users/hongchuangyanfa/Downloads/5e78576be270f74f71be2eb9c82de17f.xls";
-        Workbook wb = new Workbook();
-        String htmlUrl2 = "/Users/hongchuangyanfa/Desktop/pdf/1234.html";
-
-      //  InputStream inputStream = getOSSInputStream(fileUrl);
-
-        wb.loadFromMHtml(excUrl);
-
-        Worksheet sheet = wb.getWorksheets().get(0);
-        HTMLOptions options = new HTMLOptions();
-        options.setImageEmbedded(true);
-        // 校验excel 是否正常
-        sheet.saveToHtml(htmlUrl2, options);
-    }
-*/
-
-    public static void main11(String[] args){
-        String id="";
-        try{
-            //首先加载驱动
-            Class.forName("com.mysql.cj.jdbc.Driver");
-
-            //提供JDBC连接的URL
-            String url="jdbc:mysql://47.115.117.246:3306/bladex";
-            String username="root";
-            String password="dianqian666";
-
-            //创建数据库的连接
-            Connection con = DriverManager.getConnection(url,username,password);
-
-            //创建一个statement执行者
-            String sql="select id,file_url,html_url from m_excel_tab where alias LIKE '%1572469868132229121%' and LENGTH(file_url)>=10 and is_deleted=0";
-            PreparedStatement statement = con.prepareStatement(sql);
-            //执行SQL语句
-            ResultSet result = statement.executeQuery();
-            Workbook wb = new Workbook();
-
-            //处理返回结果
-            while (result.next()){
-                String fileUrl = result.getString("file_url");
-                String htmlUrl = result.getString("html_url");
-                id = result.getString("id");
-                htmlUrl = htmlUrl.substring(htmlUrl.lastIndexOf("/")+1,htmlUrl.length());
-              String htmlUrl2 = "/Users/hongchuangyanfa/Desktop/pdf/"+htmlUrl;
-
-                InputStream inputStream = getOSSInputStream(fileUrl,id);
-
-                wb.loadFromMHtml(inputStream);
-
-                Worksheet sheet = wb.getWorksheets().get(0);
-                HTMLOptions options = new HTMLOptions();
-                options.setImageEmbedded(true);
-                // 校验excel 是否正常
-                sheet.saveToHtml(htmlUrl2, options);
-            }
-
-            //关闭JDBC对象
-            con.close();
-            result.close();
-            statement.close();
-            System.out.println("完成");
-        }catch(ClassNotFoundException e){
-            System.out.println("加载驱动失败!");
-        } catch(Exception e){
-            System.out.println(id);
-            e.printStackTrace();
-        }
-    }
-
-    public static InputStream getOSSInputStream(String urlStr,String id) throws Exception {
-        //获取OSS文件流
-        URL url =new URL(urlStr);
-        final URLConnection conn = url.openConnection();
-        conn.setConnectTimeout(500);
-        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
-        try {
-            return conn.getInputStream();
-        } catch (Exception e){
-            System.out.println(id);
-            return null;
-        }
-    }
-}

+ 33 - 3
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -2884,7 +2884,7 @@ public class TaskController extends BladeController {
                 if (task.getFixedFlowId() != null && !task.getFixedFlowId().equals(0L)) {
                     isDefiniteFlow = true;
 
-                    query = jdbcTemplate.query("SELECT a.id,a.fixed_flow_link,a.fixed_flow_link_sort,a.fixed_flow_link_user,a.fixed_flow_link_user_name,a.fixed_flow_link_type,fixed_flow_branch_sort,b.status from u_fixed_flow_link a ,u_task_parallel b where a.fixed_flow_branch_sort= b.sort and a.fixed_flow_link_user=b.task_user and b.process_instance_id=? and fixed_flow_id=?  ", new Object[]{task.getProcessInstanceId(),task.getFixedFlowId()}, new BeanPropertyRowMapper<>(FixedFlowLink.class));
+                    query = jdbcTemplate.query("SELECT a.id,a.fixed_flow_link,a.flow_task_type,a.fixed_flow_link_sort,a.fixed_flow_link_user,a.fixed_flow_link_user_name,a.fixed_flow_link_type,fixed_flow_branch_sort,b.status from u_fixed_flow_link a ,u_task_parallel b where a.fixed_flow_branch_sort= b.sort and a.fixed_flow_link_user=b.task_user and b.process_instance_id=? and fixed_flow_id=?  ", new Object[]{task.getProcessInstanceId(),task.getFixedFlowId()}, new BeanPropertyRowMapper<>(FixedFlowLink.class));
 
                     //查看流程中是否存在审计流程
                     for (FixedFlowLink link : query) {
@@ -3232,7 +3232,7 @@ public class TaskController extends BladeController {
     private void updateTaskParallelStatus(Task task) {
         TaskParallel taskParallelOne = jdbcTemplate.query("SELECT * FROM u_task_parallel WHERE status=1 and process_instance_id = '" + task.getProcessInstanceId() + "' AND task_user = " + SecureUtil.getUserId(), new BeanPropertyRowMapper<>(TaskParallel.class)).stream().findAny().orElse(null);
         if (taskParallelOne != null && taskParallelOne.getStatus().equals(1)) {
-            String sql = "UPDATE u_task_parallel SET status = ? ,update_time = ? WHERE id = ?";
+            String sql = "UPDATE u_task_parallel SET status = ? ,update_time = ? , create_time = SYSDATE()  WHERE id = ?";
             Object[] param = {2, new Date(), taskParallelOne.getId()};
             jdbcTemplate.update(sql, param);
         }
@@ -3629,11 +3629,14 @@ public class TaskController extends BladeController {
                         Map<Integer, Set<CellRangeAddress>> mergeConfig = rs.buildMergeConfig();
                         for (int n = 0; n < rs.getData().size(); n++) {
                             Map<String, Object> dataMap = rs.getData().get(n);
+
                             try {
                                 Workbook workbook = WorkbookFactory.create(new ByteArrayInputStream(excelByte));
                                 //获取工作表
                                 Sheet sheet = workbook.getSheetAt(0);
                                 sheet.setForceFormulaRecalculation(true);
+                                // 添加签字时间
+                                dataMap = setDQTimeInfo(dataMap,rs.getPkeyId(),report.getContractId(),report.getPeriodId(),rs.getUrl());
                                 if (Func.isNotEmpty(dataMap)) {
                                     for (String keys : dataMap.keySet()) {
                                         int y1 = Func.toInt(keys.split("_")[0]);
@@ -3921,7 +3924,34 @@ public class TaskController extends BladeController {
             StaticLog.error(e.getMessage());
         }
     }
-
+    // 添加签字时间
+    public Map<String, Object> setDQTimeInfo(Map<String, Object> dataMap, Long pkeyId,Long contractId,Long perId,String htmlUrl) {
+        String timeSql = "SELECT DISTINCT a.time_col_key,DATE_FORMAT(c.create_time, '%Y年%m月%d日') as create_time from m_textdict_info a ,m_project_assignment_user b,u_task_parallel c ,u_task d  where a.sig_role_id=b.role_id and b.user_id=c.task_user and c.process_instance_id=d.process_instance_id and  b.contract_id="+contractId+" and LENGTH(a.time_col_key)>=2 " +
+                "and d.form_data_id="+perId+" and a.tab_id="+pkeyId+"";
+        List<Map<String, Object>> maps = jdbcTemplate.queryForList(timeSql);
+        if(maps!=null && maps.size()>=1){
+            InputStream inputStreamByUrl = null;
+            try {
+                inputStreamByUrl = FileUtils.getInputStreamByUrl(htmlUrl);
+                String htmlString = IoUtil.readToString(inputStreamByUrl);
+                org.jsoup.nodes.Document doc = Jsoup.parse(htmlString);
+                Element table = doc.select("table").first();
+                for (Map<String, Object> da :maps){
+                    Elements elements = table.getElementsByAttributeValue("keyname", da.get("time_col_key")+"");
+                    for (Element element :elements){
+                        if(element.hasAttr("y1") && element.hasAttr("x1")){
+                            String keky = element.attr("y1")+"_"+element.attr("x1");
+                            String time = da.get("create_time")+"";
+                            dataMap.put(keky,time);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+        return dataMap;
+    }
 
     // 添加电签信息数据
     public void setDQInfo(Sheet sheet, ReportResult rs, String title) {

+ 2 - 2
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@@ -490,7 +490,7 @@ public class UserController {
 
         token = "bearer " + token;
         HttpClient httpClient = HttpClientBuilder.create().build();
-        HttpGet httpPost = new HttpGet("http://172.30.224.81:8090/blade-auth/oauth/user-info");
+        HttpGet httpPost = new HttpGet("http://152.168.2.11:8090/blade-auth/oauth/user-info");
         httpPost.setHeader("Authorization", token); //这个需要 client:
         List<NameValuePair> params = new ArrayList<NameValuePair>();
 
@@ -580,7 +580,7 @@ public class UserController {
         System.out.println("密码" + md5Pass);
 
         HttpClient httpClient = HttpClientBuilder.create().build();
-        HttpPost httpPost = new HttpPost("http://172.30.224.81:8090/blade-auth/oauth/token");
+        HttpPost httpPost = new HttpPost("http://152.168.2.11:8090/blade-auth/oauth/token");
         httpPost.setHeader("Authorization", Authorization);
         httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
         httpPost.setHeader("Tenant-Id", tenId);