zhuwei 3 сар өмнө
parent
commit
61a5134530
14 өөрчлөгдсөн 253 нэмэгдсэн , 128 устгасан
  1. 109 23
      blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java
  2. 1 1
      blade-gateway/src/main/java/org/springblade/gateway/GateWayApplication.java
  3. 5 0
      blade-service-api/blade-e-visa-api/src/main/java/org/springblade/evisa/vo/SealStrategyVO.java
  4. 6 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  5. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml
  6. 2 2
      blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java
  7. 71 71
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  8. 38 5
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVDataServiceImpl.java
  9. 2 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  10. 9 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  11. 3 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java
  12. 2 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InterimPayCertificateServiceImpl.java
  13. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/utils/PdfAddimgUtil.java
  14. 2 2
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

+ 109 - 23
blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java

@@ -13,13 +13,12 @@ import com.drew.metadata.Metadata;
 import com.drew.metadata.exif.ExifIFD0Directory;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import org.apache.commons.imaging.ImageReadException;
+import org.apache.commons.imaging.Imaging;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.util.CollectionUtils;
 
-import javax.imageio.IIOImage;
-import javax.imageio.ImageIO;
-import javax.imageio.ImageWriteParam;
-import javax.imageio.ImageWriter;
+import javax.imageio.*;
 import java.awt.*;
 import java.awt.color.ColorSpace;
 import java.awt.color.ICC_ColorSpace;
@@ -141,8 +140,9 @@ public class CommonUtil {
     /**
      * 根据OSS文件路径获取文件输入流
      */
-    public static InputStream getOSSInputStream(String urlStr) {
+    public static synchronized InputStream getOSSInputStream(String urlStr) {
         try {
+            System.out.println("----前-------"+urlStr);
             urlStr = replaceOssUrl(urlStr);
             int lastIndex = urlStr.lastIndexOf("/") + 1;
             String fileName = urlStr.substring(lastIndex);
@@ -150,14 +150,11 @@ public class CommonUtil {
             //获取OSS文件流
             URL url = new URL(urlStr);
             URLConnection conn = url.openConnection();
-      /*      // 设置连接超时时间
-            conn.setConnectTimeout(10000); // 5秒
-            // 设置读取超时时间
-            conn.setReadTimeout(10000); // 5秒*/
+
             conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
             return conn.getInputStream();
         } catch (Exception e) {
-            System.out.println("zw-----------");
+            System.out.println("-----------"+urlStr);
             return null;
         }
     }
@@ -526,26 +523,109 @@ public class CommonUtil {
      * @throws MetadataException
      */
 
-    public static void main(String[] args) throws IOException {
+/*    public static void main(String[] args) throws IOException, ImageProcessingException, MetadataException {
         // String imgurl = "/Users/hongchuangyanfa/Desktop/excel/432123.jpg";
         // String imgurl = "/Users/hongchuangyanfa/Desktop/excel/123.jpg";
-        String imgurl = "/Users/hongchuangyanfa/Downloads/bccb09f5e2caa85611d380f596d4febb.jpg";
-        File file = ResourceUtils.getFile(imgurl);
 
-        byte[] imageData = InputStreamToBytes(new FileInputStream(file));
 
+   //     String imgurl = "/Users/hongchuangyanfa/Downloads/03c1994653c4d59ab596e683a109e247 (1).jpg";
+        String imgurl = "http://183.247.216.148:9000/minio-oss-chongqing/upload/20250414/03c1994653c4d59ab596e683a109e247.jpg";
+
+        compressImage(imgurl);
+
+        System.out.println("图片转换并保存成功!");
+    }*/
+
+    public static byte[] compressImage(String url) throws IOException, ImageProcessingException, MetadataException{
+        // 读取原始图像(处理旋转问题)
+        InputStream file = CommonUtil.getOSSInputStream(url);
+        InputStream file2 = CommonUtil.getOSSInputStream(url);
+        byte[] imageData = InputStreamToBytes(file);
+
+        Metadata metadata = ImageMetadataReader.readMetadata(new ByteArrayInputStream(imageData));
+        if (metadata.containsDirectoryOfType(ExifIFD0Directory.class)) {
+            ExifIFD0Directory exifIFD0Directory = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
+            if (exifIFD0Directory.containsTag(ExifIFD0Directory.TAG_ORIENTATION)) {
+                // 获取 Orientation 标签的值
+                int orientation = exifIFD0Directory.getInt(ExifIFD0Directory.TAG_ORIENTATION);
+                // 需要旋转图片
+                // 1 无需纠正 2 水平翻转(镜像)3 垂直翻转(旋转180°) 4 水平翻转+垂直翻转 5 水平翻转+旋转90°
+                // 6 旋转90° 7 水平翻转+旋转270° 8 +旋转270°
+                if (orientation > 1) {
+                    BufferedImage originalImage = ImageIO.read(new ByteArrayInputStream(imageData));
+                    AffineTransform transform = new AffineTransform();
+                    if (orientation == 3) {
+                        transform.rotate(Math.PI, originalImage.getWidth() / 2, originalImage.getHeight() / 2);
+                    } else if (orientation == 6) {
+                        transform.rotate(Math.PI / 2, originalImage.getWidth() / 2, originalImage.getHeight() / 2);
+                    } else if (orientation == 8) {
+                        transform.rotate(-Math.PI / 2, originalImage.getWidth() / 2, originalImage.getHeight() / 2);
+                    }
+                    AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
+                    originalImage = op.filter(originalImage, null);
+                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                    ImageIO.write(originalImage, "jpg", baos);
+                    imageData = baos.toByteArray();
+                }
+            }
+        }
+
+        // 缩放图像
+        String formatName = "JPEG";
         ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
-        try {
-            ImageIO.setUseCache(false);
-            BufferedImage originalImage = ImageIO.read(bais);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
+        BufferedImage   originalImage =ImageIO.read(file2);
+
+        long sizeLimit = 1024*1024*5; //5M 1920 ×1080
+        int width = 1080;
+        int height = 1920;
+        Image scaledImage = originalImage.getScaledInstance(width, height, Image.SCALE_SMOOTH);
+        BufferedImage resizedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
+        resizedImage.getGraphics().drawImage(scaledImage, 0, 0, null);
+
+        // 压缩图像
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ImageIO.write(resizedImage, formatName, baos);
+
+        if (baos.size() <= sizeLimit) {
+            // 图片大小已经小于等于目标大小,直接返回原始数据
+            return baos.toByteArray();
         }
-        System.out.println("图片转换并保存成功!");
-    }
 
+        float quality = 0.9f; // 初始化压缩质量
+        int retries = 10; // 最多尝试 10 次
+
+        while (baos.size() > sizeLimit && retries > 0) {
+            // 压缩图像并重新计算压缩质量
+            byte[] data = baos.toByteArray();
+            bais = new ByteArrayInputStream(data);
+            BufferedImage compressedImage = ImageIO.read(bais);
+            baos.reset();
 
-    public static byte[] compressImage(byte[] imageData) throws IOException, ImageProcessingException, MetadataException {
+            ImageWriter writer = null;
+            Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName(formatName);
+            if (writers.hasNext()) {
+                writer = writers.next();
+            } else {
+                throw new IllegalArgumentException("Unsupported image format: " + formatName);
+            }
+
+            ImageWriteParam writeParam = writer.getDefaultWriteParam();
+            writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+            writeParam.setCompressionQuality(1);
+
+            writer.setOutput(ImageIO.createImageOutputStream(baos));
+            writer.write(null, new IIOImage(compressedImage, null, null), writeParam);
+            writer.dispose();
+
+            float ratio = sizeLimit * 1.0f / baos.size();
+            quality *= Math.sqrt(ratio);
+            retries--;
+        }
+
+        return baos.toByteArray();
+    }
+
+    public static byte[] compressImage(byte[] imageData) throws IOException, ImageProcessingException, MetadataException{
         // 读取原始图像(处理旋转问题)
         Metadata metadata = ImageMetadataReader.readMetadata(new ByteArrayInputStream(imageData));
         if (metadata.containsDirectoryOfType(ExifIFD0Directory.class)) {
@@ -578,7 +658,13 @@ public class CommonUtil {
         // 缩放图像
         String formatName = "JPEG";
         ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
-        BufferedImage originalImage = ImageIO.read(bais);
+        BufferedImage   originalImage = null;
+        try {
+            originalImage = Imaging.getBufferedImage(imageData);
+        } catch (ImageReadException e) {
+
+        }
+
         long sizeLimit = 1024*1024*5; //5M 1920 ×1080
         int width = 1080;
         int height = 1920;

+ 1 - 1
blade-gateway/src/main/java/org/springblade/gateway/GateWayApplication.java

@@ -30,7 +30,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 @EnableHystrix
 @EnableScheduling
 @SpringCloudApplication
-public class GateWayApplication {
+public class  GateWayApplication {
 
     public static void main(String[] args) {
         BladeApplication.run(AppConstant.APPLICATION_GATEWAY_NAME, GateWayApplication.class, args);

+ 5 - 0
blade-service-api/blade-e-visa-api/src/main/java/org/springblade/evisa/vo/SealStrategyVO.java

@@ -110,6 +110,11 @@ public class SealStrategyVO {
      */
     private String family;
 
+    /**
+     * 项目Id
+     */
+    private String projectId;
+
     /**
      * 为null时,电签接口默认设为0。
      * 采用坐标定位签章位置时

+ 6 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -1273,7 +1273,7 @@ public class TaskController extends BladeController {
         int size = dto.getSize();
         //封装入参SQL
         List<Object> params = new ArrayList<>();
-        StringBuilder sqlString = new StringBuilder("SELECT * FROM u_task WHERE 1=1 AND is_deleted = 0 AND approval_type in(1,2,3,4,8,9,10)");
+        StringBuilder sqlString = new StringBuilder("SELECT * FROM u_task WHERE 1=1 AND is_deleted = 0 AND approval_type in(1,3,4,8,9,10)");
         if (ObjectUtil.isNotEmpty(dto.getTypeValue())) {
             sqlString.append(" AND type = ?");
             params.add(dto.getTypeValue());
@@ -1307,6 +1307,10 @@ public class TaskController extends BladeController {
                         Set<Long> ids = contractRelationJLYZ.stream().map(ContractRelationJlyz::getContractIdSg).collect(Collectors.toSet());
                         ids.add(dto.getCurrentContractId()); //把监理本身也加入查询
                         sqlString.append(" AND contract_id in(").append(StringUtils.join(ids, ",")).append(")");
+
+                        // 排除监理创建的数据
+                        sqlString.append(" AND form_data_id not in( SELECT id from u_information_query where type=1 and contract_id='"+dto.getCurrentContractId()+"' )");
+
                     } else {
                         //如果下拉框合同段选择框合同段!=当前用户登陆合同段,那么查询下拉框合同段数据
                         sqlString.append(" AND contract_id = ?");
@@ -2004,7 +2008,7 @@ public class TaskController extends BladeController {
             return R.fail("请选择一条记录");
         }
         String header = request.getHeader("Blade-Auth");
-      //  taskService.reSigningEVisa(dto.getClassifyType(), dto.getTaskIds(), dto.getContractId(), dto.getProjectId(), dto.getType(), header,request);
+        taskService.reSigningEVisa(dto.getClassifyType(), dto.getTaskIds(), dto.getContractId(), dto.getProjectId(), dto.getType(), header,request);
         return R.success("任务已经成功提交重签,请耐心等待!");
     }
 

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

@@ -567,6 +567,8 @@
         where is_deleted = 0
           and contract_id = #{contractId}
           and classify = #{classify}
+          and status !=3
+          and contract_id = #{contractId}
     </select>
 
     <select id="countInformationQuery" resultType="java.lang.Integer">

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

@@ -101,8 +101,8 @@ public interface ITaskService extends BaseService<Task> {
      */
     void delArchiveFileBusinessData(Long projectId, Long wbsId);
 
-
-    void reSigningEVisa(String classify, String taskIds, String contractId, String projectId,Integer type, String header);
+    @Async
+    void reSigningEVisa(String classify, String taskIds, String contractId, String projectId,Integer type, String header,HttpServletRequest request);
 
     /**
      * 根据数据源id查询任务

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

@@ -1847,75 +1847,75 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             archiveFileService.deleteLogic(ids);
         }
     }
+/*
+    @Override
+    public void reSigningEVisa(String taskIds, String contractId, String projectId,String header,HttpServletRequest request) {
+        List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));
+        if (taskList.size() > 0) {
+            List<String> dataIdList = taskList.stream().map(Task::getFormDataId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
+            List<InformationQuery> informationQueryList = jdbcTemplate.query("select * from u_information_query where id in(" + StringUtils.join(dataIdList, ",") + ")", new BeanPropertyRowMapper<>(InformationQuery.class));
+            if (informationQueryList.size() > 0) {
+                List<Long> nodePKeyIdList = informationQueryList.stream().map(InformationQuery::getWbsId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
+                if (nodePKeyIdList.size() > 0) {
+                    try {
+                      //  重新保存
+                        long startTime_1 = System.currentTimeMillis();
+                        R result = this.saveNodePdf( ,StringUtils.join(nodePKeyIdList, ","), contractId, projectId,header);
+                        long endTime_1 = System.currentTimeMillis();
+                        long executionTime_1 = endTime_1 - startTime_1;
+                        log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");
 
-//    @Override
-//    public void reSigningEVisa(String taskIds, String contractId, String projectId,String header) {
-//        List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));
-//        if (taskList.size() > 0) {
-//            List<String> dataIdList = taskList.stream().map(Task::getFormDataId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
-//            List<InformationQuery> informationQueryList = jdbcTemplate.query("select * from u_information_query where id in(" + StringUtils.join(dataIdList, ",") + ")", new BeanPropertyRowMapper<>(InformationQuery.class));
-//            if (informationQueryList.size() > 0) {
-//                List<Long> nodePKeyIdList = informationQueryList.stream().map(InformationQuery::getWbsId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
-//                if (nodePKeyIdList.size() > 0) {
-//                    try {
-//                        //重新保存
-//                        long startTime_1 = System.currentTimeMillis();
-//                        R result = this.saveNodePdf(StringUtils.join(nodePKeyIdList, ","), contractId, projectId,header);
-//                        long endTime_1 = System.currentTimeMillis();
-//                        long executionTime_1 = endTime_1 - startTime_1;
-//                        log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");
-//
-//                        //重新电签
-//                        if (result != null && "成功".equals(result.getData())) {
-//
-//                            List<TaskApprovalVO> taskApprovalVOS = new ArrayList<>();
-//                            //获取任务详情信息Map
-//                            Set<String> processInstanceIds = taskList.stream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
-//                            Map<String, List<TaskParallel>> taskParallelGroupMap = new HashMap<>();
-//                            if (processInstanceIds.size() > 0) {
-//                                String resultIds = processInstanceIds.stream()
-//                                        .map(id -> "'" + id + "'")
-//                                        .collect(Collectors.joining(","));
-//                                taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,e_visa_status,task_user,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
-//                            }
-//                            Map<String, List<TaskParallel>> finalTaskParallelGroupMap = taskParallelGroupMap;
-//
-//                            for (Task task : taskList) {
-//                                List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
-//                                for (TaskParallel taskParallel : taskParallelList) {
-//                                    //待审批的不进行重签, 存在待审批,但是电签状态是失败的
-//                                    if (!(new Integer(1)).equals(taskParallel.getStatus()) || (taskParallel.getEVisaStatus() != null && taskParallel.getEVisaStatus() == 99)) {
-//                                        TaskApprovalVO approvalVO = new TaskApprovalVO();
-//                                        approvalVO.setTaskId(task.getId().toString());
-//                                        approvalVO.setFlag("OK");
-//                                        approvalVO.setComment("重新发起电签");
-//                                        approvalVO.setApprovalType(1);
-//                                        approvalVO.setFormDataId(task.getFormDataId());
-//                                        approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
-//                                        approvalVO.setYsNickName(taskParallel.getTaskUserName());
-//                                        approvalVO.setUserId(Long.parseLong(taskParallel.getTaskUser()));
-//                                        taskApprovalVOS.add(approvalVO);
-//                                    }
-//                                }
-//                            }
-//                            long startTime_2 = System.currentTimeMillis();
-//                            this.batchCompleteApprovalTask(taskApprovalVOS);
-//                            long endTime_2 = System.currentTimeMillis();
-//                            long executionTime_2 = endTime_2 - startTime_2;
-//                            log.info("batchCompleteApprovalTask执行时间:" + executionTime_2 + " 毫秒");
-//                        } else {
-//                            throw new ServiceException("重新保存PDF信息失败");
-//                        }
-//
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                        throw new ServiceException("重新保存PDF信息失败,原因:" + e.getMessage());
-//                    }
-//                }
-//            }
-//        }
-//        throw new ServiceException("未获取到任务信息,操作失败!");
-//    }
+                       // 重新电签
+                        if (result != null && "成功".equals(result.getData())) {
+
+                            List<TaskApprovalVO> taskApprovalVOS = new ArrayList<>();
+                           // 获取任务详情信息Map
+                            Set<String> processInstanceIds = taskList.stream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
+                            Map<String, List<TaskParallel>> taskParallelGroupMap = new HashMap<>();
+                            if (processInstanceIds.size() > 0) {
+                                String resultIds = processInstanceIds.stream()
+                                        .map(id -> "'" + id + "'")
+                                        .collect(Collectors.joining(","));
+                                taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,e_visa_status,task_user,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
+                            }
+                            Map<String, List<TaskParallel>> finalTaskParallelGroupMap = taskParallelGroupMap;
+
+                            for (Task task : taskList) {
+                                List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
+                                for (TaskParallel taskParallel : taskParallelList) {
+                                    //待审批的不进行重签, 存在待审批,但是电签状态是失败的
+                                    if (!(new Integer(1)).equals(taskParallel.getStatus()) || (taskParallel.getEVisaStatus() != null && taskParallel.getEVisaStatus() == 99)) {
+                                        TaskApprovalVO approvalVO = new TaskApprovalVO();
+                                        approvalVO.setTaskId(task.getId().toString());
+                                        approvalVO.setFlag("OK");
+                                        approvalVO.setComment("重新发起电签");
+                                        approvalVO.setApprovalType(1);
+                                        approvalVO.setFormDataId(task.getFormDataId());
+                                        approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
+                                        approvalVO.setYsNickName(taskParallel.getTaskUserName());
+                                        approvalVO.setUserId(Long.parseLong(taskParallel.getTaskUser()));
+                                        taskApprovalVOS.add(approvalVO);
+                                    }
+                                }
+                            }
+                            long startTime_2 = System.currentTimeMillis();
+                            this.batchCompleteApprovalTask(taskApprovalVOS);
+                            long endTime_2 = System.currentTimeMillis();
+                            long executionTime_2 = endTime_2 - startTime_2;
+                            log.info("batchCompleteApprovalTask执行时间:" + executionTime_2 + " 毫秒");
+                        } else {
+                            throw new ServiceException("重新保存PDF信息失败");
+                        }
+
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        throw new ServiceException("重新保存PDF信息失败,原因:" + e.getMessage());
+                    }
+                }
+            }
+        }
+        throw new ServiceException("未获取到任务信息,操作失败!");
+    }*/
         @Override
         public R reSigningEVisaStatus0(List<reSigningEVisaStatus> dtos, String header) throws Exception {
          R result= new R();
@@ -1951,7 +1951,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
     }
 
     @Override
-    public void reSigningEVisa(String classify, String taskIds, String contractId, String projectId, Integer type, String header ) {
+    public void reSigningEVisa(String classify, String taskIds, String contractId, String projectId, Integer type, String header,HttpServletRequest request ) {
         //查询任务信息
         List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));
         if (taskList.size() > 0) {
@@ -2077,8 +2077,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     }
                 }
                 //获取当前操作人
-                Long userId = 1777156889464066049L ;//AuthUtil.getUserId(request);
-                String userName = "wangbn";//AuthUtil.getNickName(request);
+                Long userId = AuthUtil.getUserId(request);
+                String userName = AuthUtil.getNickName(request);
                 //判断是否是超级管理员并且是泓创智诚下的部门
                 if(judgeRoleIdAndDeptId(userId)){
                     //满足去除当前填报人的条件 去除当前任务的填报人中当前操作人的信息

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

@@ -8,6 +8,7 @@ import cn.hutool.core.io.file.FileReader;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.AllArgsConstructor;
+import lombok.Synchronized;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.business.entity.InformationQuery;
@@ -76,6 +77,7 @@ public class EVDataServiceImpl implements EVDataService {
      */
 
     @Override
+    @Synchronized
     public void signTaskBatch(TaskSignInfoVO taskApp) {
         //获取pdf 文件
         if (taskApp.getFlag().equals("OK")) {
@@ -209,7 +211,7 @@ public class EVDataServiceImpl implements EVDataService {
             //电签成功
             if (taskApp.getSigState() == 1) { //签字成功
                 String updateSql = "";
-                if (taskApp.getApprovalType() == 1) { //
+                if (taskApp.getApprovalType() == 1 || taskApp.getApprovalType() == 9) { //
                     //
                     String sys_isonline = ParamCache.getValue(CommonConstant.SYS_ISONLINE);
                     String pdfPage = "0";
@@ -319,6 +321,9 @@ public class EVDataServiceImpl implements EVDataService {
                     //修改 计量 需要引用的 附件信息
                     String updataFile = "update s_attachment_form set file_url='"+nodePdfUrl+"' ,file_pdf_url='"+nodePdfUrl+"' where select_id='"+taskApp.getFormDataId()+"' ";
                     jdbcTemplate.execute(updataFile);
+
+                    String upTsk = "update s_attachment_form_task set file_url='"+nodePdfUrl+"' ,file_pdf_url='"+nodePdfUrl+"' where select_id='"+taskApp.getFormDataId()+"' ";
+                    jdbcTemplate.execute(upTsk);
                 } else if (taskApp.getApprovalType() == 2) {
                     updateSql = "update u_archive_file set e_visa_file='" + taskApp.getLastFilePdfUrl() + "',status='" + taskApp.getSigType() + "',update_time=SYSDATE() where id='" + taskApp.getFormDataId() + "' ";
                 } else if (taskApp.getApprovalType() == 3) { // 日志
@@ -365,7 +370,7 @@ public class EVDataServiceImpl implements EVDataService {
         taskApp.setSigState(1);
         Map<String, Object> map = new HashMap<>();
         try {
-            if (taskApp.getApprovalType() == 1 || taskApp.getApprovalType() == 8) {
+            if (taskApp.getApprovalType() == 1 || taskApp.getApprovalType() == 8 || taskApp.getApprovalType() == 9) {
                 map = this.jdbcTemplate.queryForMap("select * from u_information_query where  is_deleted=0 and id = " + taskApp.getFormDataId());
                 String pdfTrialUrlPosition = map.get("pdf_trial_url_position") + ""; //关联工程部位信息后合并的pdf路径
                 String pdfTrialUrl = map.get("pdf_trial_url") + ""; //pdf路径,引用试验记录后合并的pdf
@@ -425,7 +430,8 @@ public class EVDataServiceImpl implements EVDataService {
                 map = this.jdbcTemplate.queryForMap("select * from s_interim_pay_certificate where  is_deleted=0 and contract_period_id = " + taskApp.getFormDataId());
                 String pdfUrl=map.get("raw_url") + "";
                 //中间计量用逗号拼接pagePdfUrl
-                if(StringUtils.isNotEmpty(map.get("page_pdf_url")+"")){
+               /* String pageUrl = map.get("page_pdf_url")+"";
+                if(StringUtils.isNotEmpty(pageUrl) && pageUrl.length()>=20 ){
                     String jsonStr=map.get("page_pdf_url")+"";
                     ObjectMapper mapper = new ObjectMapper();
                     JsonNode jsonNode = mapper.readTree(jsonStr);
@@ -439,7 +445,7 @@ public class EVDataServiceImpl implements EVDataService {
                         }
                     }
                     pdfUrl=result.toString();
-                }
+                }*/
                 taskApp.setSignPdfUrl(pdfUrl);
             } else if (taskApp.getApprovalType() == 6 || taskApp.getApprovalType() == 7) {
                 map = this.jdbcTemplate.queryForMap("select * from  s_material_start_statement where is_deleted=0 and meter_period_id = " + taskApp.getFormDataId());
@@ -537,6 +543,7 @@ public class EVDataServiceImpl implements EVDataService {
         String[] userNames = Func.toStrArray(task.getNickName());
         List<SealStrategyVO> sealStrategyVOS = new ArrayList<>();
 
+
         if(strArray!=null && strArray.length>0){
             for (int i =0 ;i < strArray.length;i++) {
                 String userId =strArray[i];
@@ -576,7 +583,6 @@ public class EVDataServiceImpl implements EVDataService {
                     if (maps == null || maps.size() <= 0) {
                         break;
                     }
-
                     //准备签章策略
                     for (Map<String, Object> eVisaConfig : maps) {
                         //设置签章策略
@@ -597,6 +603,7 @@ public class EVDataServiceImpl implements EVDataService {
                             vo.setOffSetY(eVisaConfig.get("pyzby") + "");
                             vo.setHeight(eVisaConfig.get("high") + "");
                             vo.setWidth(eVisaConfig.get("wide") + "");
+                            vo.setProjectId(eVisaConfig.get("project_id") + "");
                         } else if (task.getSigType() == 2) {
                             vo.setSealCode(EVisaConstant.SIGN_SEAL_CODE + eVisaConfig.get("sfId"));
                             vo.setSealPassword(eVisaConfig.get("certificate_password") + "");
@@ -610,12 +617,38 @@ public class EVDataServiceImpl implements EVDataService {
                             vo.setOffSetY(eVisaConfig.get("pyzby") + "");
                             vo.setHeight(eVisaConfig.get("high") + "");
                             vo.setWidth(eVisaConfig.get("wide") + "");
+                            vo.setProjectId(eVisaConfig.get("project_id") + "");
                         }
                         sealStrategyVOS.add(vo);
                     }
                 }
             }
         }
+
+        // 去掉 重复的数据
+        if(sealStrategyVOS!=null && sealStrategyVOS.size() > 0){
+            Map<String, List<SealStrategyVO>> groupByPriceMap = sealStrategyVOS.stream()
+                    .collect(Collectors.groupingBy(SealStrategyVO::getKeyword));
+            List<SealStrategyVO> sealStrategyVOS2 = new ArrayList<>();
+            for(String keval:groupByPriceMap.keySet()){
+                List<SealStrategyVO> sealStr = groupByPriceMap.get(keval);
+                if(sealStr!=null && sealStr.size()>0){
+                    int index = 0;
+                    for(int i=0;i<sealStr.size();i++){
+                        if ((sealStr.get(i).getProjectId()).equals(task.getProjectId())) {
+                            index = i;
+                        }
+                    }
+                    sealStrategyVOS2.add(sealStr.get(index));
+                }
+            }
+            if(sealStrategyVOS2!=null && sealStrategyVOS2.size() > 0){
+                Map<String, List<SealStrategyVO>> groupByPriceMap3 = sealStrategyVOS2.stream()
+                        .collect(Collectors.groupingBy(SealStrategyVO::getKeyword));
+                return sealStrategyVOS2;
+            }
+        }
+
         return sealStrategyVOS;
     }
 

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

@@ -1813,7 +1813,7 @@ public class ExcelTabController extends BladeController {
         }
 
         //获取节点下的所有表单,和附件,如果表单全是隐藏的,并且没有附件,则提示暂无数据
-        String sql = "select pdf_url,e_visa_pdf_url,pdf_trial_url,pdf_trial_url_position,status from u_information_query where classify='" + classify + "' and wbs_id='" + nodeId + "' and contract_id='" + contractId + "'";
+        String sql = "select pdf_url,e_visa_pdf_url,pdf_trial_url,pdf_trial_url_position,status from u_information_query where classify='" + classify + "' and wbs_id='" + nodeId + "' and contract_id='" + contractId + "'  and status<>3 ";
         List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
         if (maps.size() < 1) {
             //判断当前合同段的类型
@@ -1877,11 +1877,6 @@ public class ExcelTabController extends BladeController {
                         netUrl = bladeFile.getLink();
                     }
                     //数字化节点附件处理
-                    String sqll = "SELECT * FROM m_wbs_tree_contract WHERE p_key_id=" + nodeId;
-                    WbsTreeContract wbsTreeContract = jdbcTemplate.queryForObject(sqll, new BeanPropertyRowMapper<>(WbsTreeContract.class));
-                    //if(ObjectUtil.isNotEmpty(wbsTreeContract.getNodeClass())&&wbsTreeContract.getNodeClass().equals(2)){
-                   // InformationQuery iq = informationQueryClient.getInfoByWbsId(wbsTreeContract.getPKeyId());
-                  //  if (iq.getNodePdfUrl() == null || iq.getEVisaPdfPage() == null || iq.getEVisaPdfSize() == null || iq.getEVisaPdfPage() == 0  || !iq.getNodePdfUrl().equals(netUrl)) {
                         String pdfPage = FileUtils.getPdfNum(netUrl);
                         if (pdfPage != null && pdfPage.equals("")) {
                             pdfPage = "0";
@@ -1889,8 +1884,7 @@ public class ExcelTabController extends BladeController {
                         Long pdfSize = CommonUtil.getResourceLength(netUrl);
                         String sql1 = "update u_information_query set node_pdf_url='" + netUrl + "',e_visa_pdf_page=" + pdfPage + " ,e_visa_pdf_size=" + pdfSize + " where classify='" + classify + "' and wbs_id='" + nodeId + "' and contract_id='" + contractId + "'";
                         jdbcTemplate.execute(sql1);
-                   // }
-                    // }
+
                     return R.data(netUrl);
                 } else {
                     jdbcTemplate.execute(" update  u_information_query set node_pdf_url='" + pdfUrl + "' where classify='" + classify + "' and wbs_id='" + nodeId + "' and contract_id='" + contractId + "'");

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

@@ -2227,14 +2227,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                             if (myData.indexOf("http") >= 0 && (myData.indexOf("aliyuncs") >= 0 ||myData.indexOf("183.247.216.148") >= 0||myData.indexOf("xinan1.zos.ctyun.cn") >= 0)) {
                                 InputStream imageIn = CommonUtil.getOSSInputStream(myData);
                                 if (imageIn != null) {
-                                    byte[] bytes = null;
-                                    if (sys_isonline.equals("20")) {
-                                        bytes = IOUtils.toByteArray(imageIn);
-                                    } else {
-                                        byte[] byteNew = IOUtils.toByteArray(imageIn);
-                                        bytes = CommonUtil.compressImage(byteNew);
-                                       // bytes = IOUtils.toByteArray(imageIn);
-                                    }
+                                    byte[] bytes = CommonUtil.compressImage(myData);
                                     // 这里根据实际需求选择图片类型
                                     int pictureIdx = workbook.addPicture(bytes, 6);
                                     CreationHelper helper = workbook.getCreationHelper();
@@ -3103,7 +3096,14 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 for (int j = 0; j < cellNum; j++) {
                     Cell cell = row.getCell(j);
                     if (cell != null) {
-                        String cellValue = cell.getStringCellValue();
+                        String cellValue="";
+                        if (cell.getCellType() == 0) {
+                            double numValue = cell.getNumericCellValue();
+                            cellValue = String.valueOf(numValue);
+                        } else {
+                            cellValue = cell.getStringCellValue();
+                        }
+
                         if (cellValue != null && !cellValue.isEmpty()) {
                             if (cellValue.contains(oldContext)) {
                                 cell.setCellValue(newContext);

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

@@ -3938,6 +3938,7 @@ public class TaskController extends BladeController {
             //查询出当前计量期对应的任务
             String selectTask = "SELECT * from u_task WHERE approval_type =? and form_data_id = ? and is_deleted = 0 and status in (1,2)";
             List<Task> list = jdbcTemplate.query(selectTask, new BeanPropertyRowMapper<>(Task.class), type1,periodId);
+            System.out.println("wewecq"+selectTask);
             if (list.size() == 0){
                 return R.fail("撤销失败:未查出当前计量期对应任务信息");
             }
@@ -4162,11 +4163,11 @@ public class TaskController extends BladeController {
             stringBuilder.deleteCharAt(stringBuilder.length() - 1);
             stringBuilder.append("}");
             String string = stringBuilder.toString();
-            String sqlUpdate = "update s_interim_pay_certificate set file_url_list = '"+string +"',raw_url = '"+rawPdfUrL+"' where id = "+report.getId();
+            String sqlUpdate = "update s_interim_pay_certificate set file_url_list = '"+string +"',raw_url = '"+rawPdfUrL+"',pre_pdf_url = '"+rawPdfUrL+"' where id = "+report.getId();
             jdbcTemplate.execute(sqlUpdate);
             if (taskType != 10) {
-                interimPayCertificateService.taskMeterPdfInfo2("",report.getPeriodId()+"",report.getType());
                 addSignTaskBatch(report);
+                interimPayCertificateService.taskMeterPdfInfo2("",report.getPeriodId()+"",report.getType());
             }
             return R.data(rawPdfUrL);
         }else{

+ 2 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InterimPayCertificateServiceImpl.java

@@ -231,7 +231,7 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
            }
 
             if(task == null && reportId!=null && reportId.length()>=6){
-                task = jdbcTemplate.query("SELECT * FROM u_task WHERE form_data_id = ? ", new Object[]{reportId}, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
+                task = jdbcTemplate.query("SELECT * FROM u_task WHERE status in(1,2) and  form_data_id = ? ", new Object[]{reportId}, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
             }
 
             if (task == null) {
@@ -293,7 +293,7 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
 
                     if (Func.isNotEmpty(maps) || maps.size() >= 1) {
                         InputStream ossInputStream = CommonUtil.getOSSInputStream(pdfUrl);
-                        String localPdfPath = FileUtils.getSysLocalFileUrl() + "/pdf//" + task.getId() + ".pdf";
+                        String localPdfPath = FileUtils.getSysLocalFileUrl() + "/pdf/" + task.getId() + ".pdf";
                         CommonUtil.convert(ossInputStream, localPdfPath);
                         PdfAddimgUtil.pdfAddImgInfo(localPdfPath, maps);
                         BladeFile bladeFile = this.newIOSSClient.uploadFile(task.getId() + ".pdf", localPdfPath);

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/utils/PdfAddimgUtil.java

@@ -67,7 +67,7 @@ public class PdfAddimgUtil {
                     pyzby = Func.toFloat(textdictInfo.get(0).get("pyzby"));
                     signImg = textdictInfo.get(0).get("signature_file_url")+"";
                 }
-                System.out.println("任务电器:"+i);
+                System.out.println(positions.size()+"j电签:"+i);
                 gaizhang(pdfFile, new File(pdfUrl), (int) position[0], position[1], position[2], signImg,pyzbx,pyzby,type);
             }
         }

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

@@ -495,7 +495,7 @@ public class UserController {
         HttpClient httpClient = HttpClientBuilder.create().build();
         HttpGet httpPost = new HttpGet("http://user.hcxxy.com:8090/blade-auth/oauth/user-info");
         if("20".equals(sys_isonline)){
-            httpPost =new HttpGet("http://127.0.0.1:8090/blade-auth/oauth/user-info");
+            httpPost =new HttpGet("http://152.168.2.11:8090/blade-auth/oauth/user-info");
         }
 
         httpPost.setHeader("Authorization", token); //这个需要 client:
@@ -589,7 +589,7 @@ public class UserController {
         String url = "http://user.hcxxy.com:8090/blade-auth/oauth/token";
         String sys_isonline = ParamCache.getValue(CommonConstant.SYS_ISONLINE);
         if("20".equals(sys_isonline)){
-            url = "http://127.0.0.1:8090/blade-auth/oauth/token";
+            url = "http://152.168.2.11:8090/blade-auth/oauth/token";
         }
         HttpPost httpPost = new HttpPost(url);
         httpPost.setHeader("Authorization", Authorization);