瀏覽代碼

数据修改

zhuwei 6 月之前
父節點
當前提交
401b0de3a5
共有 24 個文件被更改,包括 922 次插入734 次删除
  1. 44 30
      blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java
  2. 2 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/SmsClient.java
  3. 30 3
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  4. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  5. 3 3
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/EVController.java
  6. 1 1
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/ScrController.java
  7. 15 4
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVDataServiceImpl.java
  8. 125 108
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVisaServiceImpl.java
  9. 0 3
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/ScrDataServiceImpl.java
  10. 1 1
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/utils/PdfSignatureInfo.java
  11. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  12. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  13. 388 373
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  14. 4 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/SignPfxFilePreServiceImpl.java
  15. 66 63
      blade-service/blade-manager/src/main/java/org/springblade/manager/utils/FileUtils.java
  16. 3 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/utils/PdfAddimgUtil.java
  17. 19 105
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java
  18. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InterimPayCertificateMapper.xml
  19. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml
  20. 4 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInterimPayCertificateItemService.java
  21. 5 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInterimPayCertificateService.java
  22. 14 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InterimPayCertificateItemServiceImpl.java
  23. 140 23
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InterimPayCertificateServiceImpl.java
  24. 51 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/utils/MeMsgUtils.java

+ 44 - 30
blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java

@@ -20,9 +20,12 @@ import javax.imageio.ImageIO;
 import javax.imageio.ImageWriteParam;
 import javax.imageio.ImageWriter;
 import java.awt.*;
+import java.awt.color.ColorSpace;
+import java.awt.color.ICC_ColorSpace;
 import java.awt.geom.AffineTransform;
 import java.awt.image.AffineTransformOp;
 import java.awt.image.BufferedImage;
+import java.awt.image.ColorConvertOp;
 import java.io.*;
 import java.math.BigDecimal;
 import java.net.HttpURLConnection;
@@ -48,6 +51,7 @@ import org.springframework.util.ResourceUtils;
  */
 
 public class CommonUtil {
+    private static final double INCH_TO_CM = 2.54;
     public static Boolean checkBigDecimal(Object value) {
         try {
             if (value != null && StringUtils.isNotEmpty(value.toString())) {
@@ -513,23 +517,24 @@ public class CommonUtil {
      * @throws MetadataException
      */
 
-/*    public static void main(String[] args) throws IOException, ImageProcessingException, MetadataException {
-        String imgurl = "/Users/hongchuangyanfa/Desktop/excel/7777.jpg";
+    public static void main(String[] args) throws IOException {
+       // 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[] bytes = InputStreamToBytes(new FileInputStream(file));
-        byte[] bytes1 = compressImage(bytes);
 
-        ByteArrayInputStream bis = new ByteArrayInputStream(bytes1);
-        BufferedImage image = ImageIO.read(bis);
-
-        // 确定保存图片的路径和文件名
-        File outputFile = new File("/Users/hongchuangyanfa/Desktop/excel/8888.jpg");
-
-        // 使用ImageIO将BufferedImage保存到磁盘
-        ImageIO.write(image, "png", outputFile);
+        byte[] imageData = InputStreamToBytes(new FileInputStream(file));
 
+        ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
+        try {
+            ImageIO.setUseCache(false);
+            BufferedImage originalImage = ImageIO.read(bais);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
         System.out.println("图片转换并保存成功!");
-    }*/
+    }
+
 
     public static byte[] compressImage(byte[] imageData) throws IOException, ImageProcessingException, MetadataException {
         // 读取原始图像(处理旋转问题)
@@ -540,24 +545,24 @@ public class CommonUtil {
                 // 获取 Orientation 标签的值
                 int orientation = exifIFD0Directory.getInt(ExifIFD0Directory.TAG_ORIENTATION);
                 // 需要旋转图片
-
                 // 1 无需纠正 2 水平翻转(镜像)3 垂直翻转(旋转180°) 4 水平翻转+垂直翻转 5 水平翻转+旋转90°
                 // 6 旋转90° 7 水平翻转+旋转270° 8 +旋转270°
-                
-                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);
+                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();
                 }
-                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();
             }
         }
 
@@ -574,7 +579,6 @@ public class CommonUtil {
 
         // 压缩图像
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        System.out.println("zw__");
         ImageIO.write(resizedImage, formatName, baos);
 
         if (baos.size() <= sizeLimit) {
@@ -766,5 +770,15 @@ public class CommonUtil {
         return bos.toByteArray();
     }
 
-
+    // 图片厘米转像素
+    public static int cmToPx(double cm) {
+        double pixelsPerCm = 90 / INCH_TO_CM;
+        return (int) Math.round(cm * pixelsPerCm);
+    }
+    // 图片厘米转像素
+    public static double pxToCm(int px) {
+        double cmPerPixel = INCH_TO_CM / 90;
+        //保留两位小数
+        return Math.round(px * cmPerPixel * 100) / 100.0;
+    }
 }

+ 2 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/SmsClient.java

@@ -67,4 +67,6 @@ public class SmsClient implements ISmsClient {
         boolean validate = smsBuilder.template(code).validateMessage(smsCode);
         return validate ? R.success(VALIDATE_SUCCESS) : R.fail(VALIDATE_FAIL);
     }
+
+
 }

+ 30 - 3
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -13,6 +13,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.google.common.collect.Lists;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
+import org.apache.commons.codec.Charsets;
 import org.apache.commons.lang.StringUtils;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
@@ -67,6 +68,11 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.io.BufferedOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -916,11 +922,32 @@ public class InformationWriteQueryController extends BladeController {
     @PostMapping("/localVerify")
     @ApiOperationSupport(order = 21)
     @ApiOperation(value = "本地验签")
-    public R<Boolean> localVerify(@RequestParam String ids) {
-        System.out.println(ids);
-        return R.data(false);
+    public R<String> localVerify(@RequestParam String ids,HttpServletResponse response) throws Exception {
+        if (StringUtils.isNotEmpty(ids)) {
+            //判断是否未生成文件
+            String[] list = ids.split(",");
+            for (String s : list) {
+                if (StringUtils.isBlank(s)) {
+                    return R.fail("选择的资料未生成文件");
+                }
+            }
+            //获取文件
+            List<InformationQuery> result = this.informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getId, Arrays.asList(ids.split(","))));
+            if (result != null && result.size() >=1){
+                List<String> urls = result.stream().map(InformationQuery::getEVisaPdfUrl).filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
+                //打包下载
+                FileUtils.batchDownloadFileToZip(urls, response);
+            }else {
+                return R.fail("未查到文件信息");
+            }
+            return R.success("下载成功");
+        }else{
+            return R.fail("未选择文件id");
+        }
     }
 
+
+
     /**
      * 在线验签
      */

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

@@ -1767,7 +1767,9 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     if (type == 1) {
                         //重新保存
                         long startTime_1 = System.currentTimeMillis();
+
                         result = this.saveNodePdf(typeMap.get(task.getFormDataId()), queryMap.get(task.getFormDataId()), contractId, projectId, header);
+
                         long endTime_1 = System.currentTimeMillis();
                         long executionTime_1 = endTime_1 - startTime_1;
                         log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");

+ 3 - 3
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/EVController.java

@@ -56,18 +56,18 @@ public class EVController {
     @Resource(name = "taskExecutor1")
     private ThreadPoolExecutor executor;
 
-    //@Scheduled(cron = "0/10 * * * * ?")
+   // @Scheduled(cron = "0/10 * * * * ?")
     public void SignInfo() {
         //执行代码
         log.info("扫描开始");
-        String sql = "SELECT * from u_task_batch where is_deleted=0 and id in(SELECT DISTINCT id from u_task_batch where  is_deleted=0 GROUP BY JSON_EXTRACT(json_data, '$.formDataId') ORDER BY sign_type ASC) LIMIT 10 ";
+        String sql = "SELECT *  from u_task_batch where  is_deleted=0 GROUP BY JSON_EXTRACT(json_data, '$.formDataId') ORDER BY sign_type ASC LIMIT 30  ";
 
         //String sql = "SELECT * from u_task_batch where is_deleted=0 and id=1871438158680403970 ORDER BY sign_type ASC ";
 
         List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
         if (maps != null && maps.size() >= 1 ) {
             for (Map<String, Object> dataInfo : maps) {
-                if (executor.getQueue().size()<=6 ) {
+                if (executor.getQueue().size()<=50 ) {
                     String jsonData = dataInfo.get("json_data") + "";
                     String signFormat = dataInfo.get("sign_format") + "";
                     String sigType = dataInfo.get("sign_type") + "";

+ 1 - 1
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/ScrController.java

@@ -45,7 +45,7 @@ public class ScrController {
     @Resource(name = "taskExecutor1")
     private ThreadPoolExecutor executor;
 
-    @Scheduled(cron = "0/10 * * * * ?")
+   // @Scheduled(cron = "0/10 * * * * ?")
     public void SignInfo() {
         //执行代码
 

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

@@ -76,11 +76,12 @@ public class EVDataServiceImpl implements EVDataService {
     public void signTaskBatch(TaskSignInfoVO taskApp) {
         //获取pdf 文件
         this.getSignPdfInfo(taskApp);
-        this.addSignatureTaskBatch(taskApp);
         if (taskApp.getSigState() != 1) {
             return;
         }
 
+        this.addSignatureTaskBatch(taskApp);
+
         String fileUrl = CommonUtil.replaceOssUrl(taskApp.getSignPdfUrl());
         List<String> eVisaConfigList = PDFUtils.getPdfSignIds(fileUrl, taskApp);
         if (eVisaConfigList == null || eVisaConfigList.size() == 0) {
@@ -145,6 +146,7 @@ public class EVDataServiceImpl implements EVDataService {
 
 
     public void addSignatureTaskBatch(TaskSignInfoVO taskApp) {
+        // 添加签字任务
         if(taskApp.getSigType()==1){
             String sql = "SELECT * from u_task_batch where JSON_EXTRACT(json_data, '$.taskId')="+taskApp.getTaskId()+" and sign_type=2";
             List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
@@ -155,6 +157,11 @@ public class EVDataServiceImpl implements EVDataService {
                 jdbcTemplate.execute(sql2);
             }
         }
+        // 计量签字时,需要 把 审计的任务改为已经审批
+        if(taskApp.getApprovalType()==5 || taskApp.getApprovalType()==6 || taskApp.getApprovalType()==7){
+            String UPSqlJL = " update u_task_parallel a set a.e_visa_status=1,e_visa_content='电签成功',initiative=2 where sort in( SELECT a.fixed_flow_branch_sort from u_task b,u_fixed_flow_link a where b.`status` in(1,2) and b.id='" + taskApp.getTaskId() + "' and a.fixed_flow_id=b.fixed_flow_id and a.flow_task_type=2 ) and a.process_instance_id in(SELECT process_instance_id from u_task b where b.`status` in(1,2) and b.id='" + taskApp.getTaskId() + "')";
+            jdbcTemplate.execute(UPSqlJL);
+        }
     }
 
     // 获取pdf 文件
@@ -282,7 +289,7 @@ public class EVDataServiceImpl implements EVDataService {
                 } else if (taskApp.getApprovalType() == 5) { //中期计量支付证书
                     updateSql = "update s_interim_pay_certificate set approve_status=" + taskApp.getSigType() + ",update_time=SYSDATE(), raw_url='" + taskApp.getLastFilePdfUrl() + "' where contract_period_id = " + taskApp.getFormDataId();
                 } else if (taskApp.getApprovalType() == 6 || taskApp.getApprovalType() == 7) {
-                    updateSql = "update s_material_start_statement set raw_url='" + taskApp.getLastFilePdfUrl() + "' where meter_period_id = " + taskApp.getFormDataId();
+                    updateSql = "update s_material_start_statement set approve_status=" + taskApp.getSigType() + ",update_time=SYSDATE(), raw_url='" + taskApp.getLastFilePdfUrl() + "' where meter_period_id = " + taskApp.getFormDataId();
                 } else if (taskApp.getApprovalType() == 8) {
                     if (taskApp.getSigType() == 2) {
                         this.jdbcTemplate.execute("update u_entrust_info set sample_status=2,status=" + (taskApp.getSigType() + 1) + ",entrust_e_pdf='" + taskApp.getLastFilePdfUrl() + "' where id=(SELECT wbs_id from u_information_query where id='" + taskApp.getFormDataId() + "')");
@@ -467,9 +474,9 @@ public class EVDataServiceImpl implements EVDataService {
     // 添加电签策略 -- 安心签
     public List<SealStrategyVO> getStrategyListByAXQ(TaskSignInfoVO task, String ids) {
         List<SealStrategyVO> sealStrategyVOS = new ArrayList<>();
-        String sqlinfo = "SELECT * from ( SELECT DISTINCT a.id,a.pyzbx ,a.pyzby,a.project_id,(SELECT signature_file_url from m_sign_pfx_file where is_register=1 and certificate_user_id='" + task.getUserId() + "' and is_deleted=0  ) as signature_file_url from m_textdict_info a where  a.type =2 and a.id in (" + ids + ") and sig_role_id in (SELECT DISTINCT c.role_id from m_project_assignment_user c  where c.contract_id=" + task.getContractId() + " and user_id=" + task.getUserId() + " and c.is_deleted=0 ) ) x where x.signature_file_url is not null ";
+        String sqlinfo = "SELECT * from ( SELECT DISTINCT a.id,a.pyzbx ,a.pyzby,a.project_id,(SELECT signature_file_url from m_sign_pfx_file where is_register=1 and certificate_user_id='" + task.getUserId() + "' and is_deleted=0  ) as signature_file_url, (SELECT wide from m_sign_pfx_file where is_register=1 and certificate_user_id='" + task.getUserId() + "' and is_deleted=0  ) as wide ,(SELECT high from m_sign_pfx_file where is_register=1 and certificate_user_id='"+task.getUserId()+"' and is_deleted=0  ) as high from m_textdict_info a where  a.type =2 and a.id in (" + ids + ") and sig_role_id in (SELECT DISTINCT c.role_id from m_project_assignment_user c  where c.contract_id=" + task.getContractId() + " and user_id=" + task.getUserId() + " and c.is_deleted=0 ) ) x where x.signature_file_url is not null and x.project_id="+task.getProjectId()+" ";
         if (task.getSigType() == 2) {
-            sqlinfo = "SELECT a.id,a.pyzbx,a.pyzby,b.signature_file_url,b.id as sfId,a.project_id,b.certificate_password,b.certificate_user_name,b.certificate_number from m_textdict_info a ,m_sign_pfx_file b where a.sig_role_id = b.pfx_type and b.project_contract_role like '%" + task.getContractId() + "%' and a.is_deleted=0 and b.is_deleted=0 and a.type=6 and a.id in(" + ids + ")";
+            sqlinfo = "SELECT a.id,a.pyzbx,a.pyzby,b.signature_file_url,b.id as sfId,a.project_id,b.certificate_password,b.certificate_user_name,b.certificate_number ,b.wide,b.high from m_textdict_info a ,m_sign_pfx_file b where a.sig_role_id = b.pfx_type and b.project_contract_role like '%" + task.getContractId() + "%' and a.is_deleted=0 and b.is_deleted=0 and a.type=6 and a.id in(" + ids + ") and a.project_id="+task.getProjectId()+"";
             System.out.println("安心签--签章--=" + sqlinfo);
         }else{
             System.out.println("安心签--签字--=" + sqlinfo);
@@ -525,6 +532,8 @@ public class EVDataServiceImpl implements EVDataService {
                 vo.setKeyword(eVisaConfig.get("id") + "");
                 vo.setOffSetX(eVisaConfig.get("pyzbx") + "");
                 vo.setOffSetY(eVisaConfig.get("pyzby") + "");
+                vo.setHeight(eVisaConfig.get("high") + "");
+                vo.setWidth(eVisaConfig.get("wide") + "");
             } else if (task.getSigType() == 2) {
                 vo.setSealCode(EVisaConstant.SIGN_SEAL_CODE + eVisaConfig.get("sfId"));
                 vo.setSealPassword(eVisaConfig.get("certificate_password") + "");
@@ -536,6 +545,8 @@ public class EVDataServiceImpl implements EVDataService {
                 vo.setKeyword(eVisaConfig.get("id") + "");
                 vo.setOffSetX(eVisaConfig.get("pyzbx") + "");
                 vo.setOffSetY(eVisaConfig.get("pyzby") + "");
+                vo.setHeight(eVisaConfig.get("high") + "");
+                vo.setWidth(eVisaConfig.get("wide") + "");
             }
             sealStrategyVOS.add(vo);
         }

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

@@ -244,7 +244,7 @@ public class EVisaServiceImpl implements EVisaService {
         if (CommonUtil.checkIsBigDecimal(sysBatch)) {
             batch = new Integer(sysBatch);
         }
-        String sql = "SELECT DISTINCT a.remark_type from m_project_info a,u_task b where a.id=b.project_id  and form_data_id='"+task.getFormDataId()+"'";
+        String sql = "SELECT DISTINCT a.remark_type from m_project_info a,u_task b where a.id=b.project_id  and form_data_id='" + task.getFormDataId() + "'";
         String reType = jdbcTemplate.queryForObject(sql, String.class);
 
         if (DistributedRedisLock.acquire(AuthUtil.getUserId().toString(), batch)) {
@@ -268,22 +268,22 @@ public class EVisaServiceImpl implements EVisaService {
                 //
                 List<Map<String, Object>> maps = new ArrayList<>();
                 Map<String, List<Map<String, Object>>> peopleByAge = maps2.stream()
-                        .collect(Collectors.groupingBy( hada ->(Func.toStr(hada.get("id")))));
+                        .collect(Collectors.groupingBy(hada -> (Func.toStr(hada.get("id")))));
 
-                for(String keyId :peopleByAge.keySet()){
+                for (String keyId : peopleByAge.keySet()) {
                     List<Map<String, Object>> keyList = peopleByAge.get(keyId);
-                    if(keyList!=null && keyList.size()==1){
+                    if (keyList != null && keyList.size() == 1) {
                         maps.addAll(keyList);
-                    }else if(keyList!=null && keyList.size()>=2){
-                        for(Map<String, Object> datax : keyList){
-                            if((datax.get("project_id")+"").equals(projectId)){
+                    } else if (keyList != null && keyList.size() >= 2) {
+                        for (Map<String, Object> datax : keyList) {
+                            if ((datax.get("project_id") + "").equals(projectId)) {
                                 maps.add(datax);
                             }
                         }
                     }
                 }
 
-                if(reType.equals("2")){ //中方中讯
+                if (reType.equals("2")) { //中方中讯
                     if (maps != null && !maps.isEmpty()) {
                         String fileUrl = finalPdfUrl;
                         for (Map<String, Object> dataMap : maps) {
@@ -294,17 +294,17 @@ public class EVisaServiceImpl implements EVisaService {
                             //daMa.put("showHeight",30);
                             //daMa.put("showWidth",60);
                             //设置显示签字体的位置
-                            String yzx = dataMap.get("pyzby")+"";
-                            String xzx = dataMap.get("pyzbx")+"";
-                            Double sealOffsetY =Func.toDouble(yzx); //Func.toInt(dataMap.get("pyzby"))-15;
-                            Double sealOffsetX =Func.toDouble(xzx); //Func.toInt(dataMap.get("pyzby"))-30;
-                            daMa.put("sealOffsetY" , sealOffsetY);
-                            daMa.put("sealOffsetX" , sealOffsetX);
+                            String yzx = dataMap.get("pyzby") + "";
+                            String xzx = dataMap.get("pyzbx") + "";
+                            Double sealOffsetY = Func.toDouble(yzx); //Func.toInt(dataMap.get("pyzby"))-15;
+                            Double sealOffsetX = Func.toDouble(xzx); //Func.toInt(dataMap.get("pyzby"))-30;
+                            daMa.put("sealOffsetY", sealOffsetY);
+                            daMa.put("sealOffsetX", sealOffsetX);
 
                             byte[] fileByte;
                             if (fileUrl.indexOf("aliyuncs.com") >= 0) {
 
-                                URL url =new URL(finalPdfUrl);
+                                URL url = new URL(finalPdfUrl);
                                 fileByte = IOUtils.toByteArray(url);
                             } else {
                                 FileReader fileReader = new FileReader(fileUrl);
@@ -316,7 +316,7 @@ public class EVisaServiceImpl implements EVisaService {
                             String reData = signPdfByDFZX(daMa);
                             if (reData.indexOf("success@") >= 0) {
                                 fileUrl = reData.split("@@@@")[1];
-                            }else{
+                            } else {
                                 return E_VISA_ERROR;
                             }
                         }
@@ -336,7 +336,7 @@ public class EVisaServiceImpl implements EVisaService {
                         RedisTemplate.delete("sign-" + task.getFormDataId());
                         return finalPdfUrl;
                     }
-                }else {
+                } else {
 
                     //准备签章策略
                     List<SealStrategyVO> sealStrategyVOS = new ArrayList<>();
@@ -386,7 +386,6 @@ public class EVisaServiceImpl implements EVisaService {
     }
 
 
-
     /**
      * 个人-电签信息
      *
@@ -404,12 +403,12 @@ public class EVisaServiceImpl implements EVisaService {
         }
 
         //根据任务类型获取对应的文件信息
-        TaskApprovalVO taskFile=new TaskApprovalVO();
-        if(task.getApprovalType()<=4 || task.getApprovalType()==8){
+        TaskApprovalVO taskFile = new TaskApprovalVO();
+        if (task.getApprovalType() <= 4 || task.getApprovalType() == 8) {
             //上报类型,1填报资料,2工程文件,3日志资料  ,  4档案数据
             taskFile = this.taskClient.queryBusinessDataTask(JSONObject.parseObject(JSONObject.toJSONString(task), TaskApprovalVO.class));
-        } else if ( task.getApprovalType()>=5) {
-           // 计量任务类型  5 = 中间计量申请,6 = 材料计量单,7 = 开工预付款计量单,8 = 变更令
+        } else if (task.getApprovalType() >= 5) {
+            // 计量任务类型  5 = 中间计量申请,6 = 材料计量单,7 = 开工预付款计量单,8 = 变更令
             try {
                 Map<String, Object> map = new HashMap<>();
                 if (task.getApprovalType() == 6 || task.getApprovalType() == 7) {
@@ -420,7 +419,7 @@ public class EVisaServiceImpl implements EVisaService {
                     taskFile.setApprovalFileList(map.get("period_number") + "", map.get("raw_url") + "");
                 }
                 taskFile.setRemarkType("1");
-            }catch (Exception e) {
+            } catch (Exception e) {
                 RedisTemplate.delete("sign-" + task.getFormDataId());
                 return NOT_PFX_SGIN;
             }
@@ -444,22 +443,22 @@ public class EVisaServiceImpl implements EVisaService {
                 }
                 String pdfUrl = file.getFileUrl();
                 pdfUrl = CommonUtil.replaceOssUrl(pdfUrl);
-                System.out.println("11111111"+pdfUrl);
+                System.out.println("11111111" + pdfUrl);
                 List<String> eVisaConfigList = PDFUtils.getPdfSignIds(pdfUrl);
                 if (eVisaConfigList == null || eVisaConfigList.size() == 0) {
                     //没有电签配置,默认当前任务为不签字审批,返回成功
                     System.out.println("------2------");
                     RedisTemplate.delete("sign-" + task.getFormDataId());
-                    if(resultMessage.indexOf(SUCCESS)>=0){
+                    if (resultMessage.indexOf(SUCCESS) >= 0) {
                         return resultMessage;
-                    }else{
+                    } else {
                         return SUCCESS + "@@@@" + taskFile.getApprovalFileList().get(0).getFileUrl();
                     }
                 }
                 String dataInfo = this.taskClient.queryTaskContractId(task.getParallelProcessInstanceId());
                 String ids = String.join(",", eVisaConfigList);
                 //判断电签类型
-                if(dataInfo==null || Func.isEmpty(dataInfo)){
+                if (dataInfo == null || Func.isEmpty(dataInfo)) {
                     return E_CONTRACT_ERROR;
                 }
                 String contractId = Func.toStrArray(dataInfo)[0];
@@ -468,46 +467,47 @@ public class EVisaServiceImpl implements EVisaService {
 
                 if (taskFile.getRemarkType().equals("2")) {
                     // 查询任务下所有
-                    String sqlinfo = " SELECT * from ( SELECT a.id as keyWord,a.project_id,a.pyzbx ,a.pyzby,(SELECT acc_code from blade_user where id='" + task.getUserId() + "' and is_deleted=0  ) as sealId from m_textdict_info a where  a.type =2 and a.id in (" + ids + ")  and sig_role_id in (SELECT DISTINCT c.role_id from m_project_assignment_user c  where c.contract_id=" + contractId + " and user_id=" + task.getUserId() + " and c.is_deleted=0 ) ) x where x.sealId is not null ";
+                    String sqlinfo = " SELECT * from ( SELECT a.id as keyWord,a.project_id,a.pyzbx ,a.pyzby,(SELECT acc_code from blade_user where id='" + task.getUserId() + "' and is_deleted=0  ) as sealId from m_textdict_info a where  a.type =2 and a.id in (" + ids + ")  and sig_role_id in (SELECT DISTINCT c.role_id from m_project_assignment_user c  where c.contract_id=" + contractId + " and user_id=" + task.getUserId() + " and c.is_deleted=0 ) ) x where x.sealId is not null and project_id='"+projectId+"' ";
                     System.out.println("东方中讯-个人-user-id" + task.getUserId() + "--SQL=" + sqlinfo);
                     List<Map<String, Object>> maps2 = jdbcTemplate.queryForList(sqlinfo);
                     List<Map<String, Object>> maps = new ArrayList<>();
                     Map<String, List<Map<String, Object>>> peopleByAge = maps2.stream()
-                                .collect(Collectors.groupingBy( hada ->(Func.toStr(hada.get("keyWord")))));
+                            .collect(Collectors.groupingBy(hada -> (Func.toStr(hada.get("keyWord")))));
                     if (maps2 != null && !maps2.isEmpty()) {
-                    for(String keyId :peopleByAge.keySet()){
-                        List<Map<String, Object>> keyList = peopleByAge.get(keyId);
-                        if(keyList!=null && keyList.size()==1){
-                            maps.addAll(keyList);
-                        }else if(keyList!=null && keyList.size()>=2){
-                            for(Map<String, Object> datax : keyList){
-                                if((datax.get("project_id")+"").equals(projectId)){
-                                    maps.add(datax);
+                        for (String keyId : peopleByAge.keySet()) {
+                            List<Map<String, Object>> keyList = peopleByAge.get(keyId);
+                            if (keyList != null && keyList.size() == 1) {
+
+                                maps.addAll(keyList);
+                            } else if (keyList != null && keyList.size() >= 2) {
+                                for (Map<String, Object> datax : keyList) {
+                                    if ((datax.get("project_id") + "").equals(projectId)) {
+                                        maps.add(datax);
+                                    }
                                 }
                             }
                         }
-                    }
                         String fileUrl = pdfUrl;
                         for (Map<String, Object> dataMap : maps) {
                             HashMap<String, Object> daMa = new HashMap<>();
                             daMa.put("keyWord", dataMap.get("keyWord"));
                             daMa.put("sealId", dataMap.get("sealId"));
                             // 设置图片显示大小
-                            daMa.put("showHeight",30);
-                            daMa.put("showWidth",60);
+                            daMa.put("showHeight", 30);
+                            daMa.put("showWidth", 60);
                             //设置显示签字体的位置
-                            String yzx = dataMap.get("pyzby")+"";
-                            String xzx = dataMap.get("pyzbx")+"";
-                            Double sealOffsetY =Func.toDouble(yzx) -15;
-                            Double sealOffsetX =Func.toDouble(xzx) -30;
-                            daMa.put("sealOffsetX",sealOffsetX);
-                            daMa.put("sealOffsetY",sealOffsetY);
-                           // daMa.put("sealOffsetY",-15);
-                           // daMa.put("sealOffsetX",-30);
+                            String yzx = dataMap.get("pyzby") + "";
+                            String xzx = dataMap.get("pyzbx") + "";
+                            Double sealOffsetY = Func.toDouble(yzx) - 15;
+                            Double sealOffsetX = Func.toDouble(xzx) - 30;
+                            daMa.put("sealOffsetX", sealOffsetX);
+                            daMa.put("sealOffsetY", sealOffsetY);
+                            // daMa.put("sealOffsetY",-15);
+                            // daMa.put("sealOffsetX",-30);
                             byte[] fileByte;
                             if (fileUrl.indexOf("aliyuncs.com") >= 0 || fileUrl.indexOf("183.247.216.148") >= 0 || fileUrl.indexOf("152.168.2.15") >= 0) {
-                                System.out.println("2222222"+pdfUrl);
-                                URL url =new URL(pdfUrl);
+                                System.out.println("2222222" + pdfUrl);
+                                URL url = new URL(pdfUrl);
                                 fileByte = IOUtils.toByteArray(url);
                             } else {
                                 FileReader fileReader = new FileReader(fileUrl);
@@ -520,7 +520,7 @@ public class EVisaServiceImpl implements EVisaService {
                             String reData = signPdfByDFZX(daMa);
                             if (reData.indexOf("success@") >= 0) {
                                 fileUrl = reData.split("@@@@")[1];
-                            }else{
+                            } else {
                                 return reData;
                             }
                         }
@@ -546,23 +546,23 @@ public class EVisaServiceImpl implements EVisaService {
 
                     List<Map<String, Object>> maps = new ArrayList<>();
                     Map<String, List<Map<String, Object>>> peopleByAge = maps2.stream()
-                            .collect(Collectors.groupingBy( hada ->(Func.toStr(hada.get("id")))));
+                            .collect(Collectors.groupingBy(hada -> (Func.toStr(hada.get("id")))));
 
-                    for(String keyId :peopleByAge.keySet()){
-                        int exId = 0 ;
+                    for (String keyId : peopleByAge.keySet()) {
+                        int exId = 0;
                         List<Map<String, Object>> keyList = peopleByAge.get(keyId);
-                        if(keyList!=null && keyList.size()==1){
+                        if (keyList != null && keyList.size() == 1) {
                             maps.addAll(keyList);
-                            exId =1;
-                        }else if(keyList!=null && keyList.size()>=2){
-                            for(Map<String, Object> datax : keyList){
-                                if((datax.get("project_id")+"").equals(projectId)){
+                            exId = 1;
+                        } else if (keyList != null && keyList.size() >= 2) {
+                            for (Map<String, Object> datax : keyList) {
+                                if ((datax.get("project_id") + "").equals(projectId)) {
                                     maps.add(datax);
-                                    exId =1;
+                                    exId = 1;
                                 }
                             }
                         }
-                        if(exId == 0){
+                        if (exId == 0) {
                             maps.add(keyList.get(0));
                         }
                     }
@@ -579,12 +579,12 @@ public class EVisaServiceImpl implements EVisaService {
                     for (Map<String, Object> eVisaConfig : maps) {
                         //设置签章策略
                         SealStrategyVO vo = new SealStrategyVO();
-                        String userId = task.getUserId()+"";
+                        String userId = task.getUserId() + "";
                         vo.setSealCode(EVisaConstant.SIGN_SEAL_CODE + userId);
 
-                        if(userId.length()<=EVisaConstant.USER_ID_SUB){
+                        if (userId.length() <= EVisaConstant.USER_ID_SUB) {
                             vo.setSealPassword(task.getUserId().toString());
-                        }else{
+                        } else {
                             vo.setSealPassword(task.getUserId().toString().substring(0, EVisaConstant.USER_ID_SUB));
                         }
                         vo.setSealPerson(task.getNickName());
@@ -839,7 +839,6 @@ public class EVisaServiceImpl implements EVisaService {
     }
 
 
-
     /**
      * 安心 - 签章
      */
@@ -847,10 +846,10 @@ public class EVisaServiceImpl implements EVisaService {
         Object[] result = new Object[3];
         try {
             String sys_isonline = ParamCache.getValue(CommonConstant.SYS_ISONLINE);
-            if("20".equals(sys_isonline) || SystemUtils.isWindows() || SystemUtils.isMacOs()){
+            if ("20".equals(sys_isonline) || SystemUtils.isWindows() || SystemUtils.isMacOs()) {
                 SIGN_HOST = "47.115.117.246";
             }
-
+            System.out.println("电签Ip===:" + SIGN_HOST);
             PaperlessClient paperlessClient = new PaperlessClient(SIGN_HOST, SIGN_PORT, 240000000, 810000000);
             paperlessClient.setSSL(false);
             //*****************************************************************************
@@ -878,9 +877,9 @@ public class EVisaServiceImpl implements EVisaService {
             pdfBean.setBizSerialNo(GUIDUtil.generateId());
             pdfBean.setInputSource("");
             pdfBean.setInputType(BaseConstants.INPUT_TYPE_FILEDATA);
-            logger.info("【电签模块】pdf{}", "长度"+fileByte.length);
+            logger.info("【电签模块】pdf{}", "长度" + fileByte.length);
             pdfBean.setPdfData(fileByte);
-           // pdfBean.set
+            // pdfBean.set
             //pdfBean.set
             pdfBeans.add(pdfBean);
 
@@ -980,13 +979,26 @@ public class EVisaServiceImpl implements EVisaService {
 
                     //设置大小(首先排查档案水印章,因为水印章要保持原样)
                     if (!vo.getImageUrl().equals("https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com//upload/20230911/5b42583d931664b785ebf481c37d17bc.png")) {
+                        int width = 0;
+                        int heigh = 0;
                         if (vo.isCompanySeal()) {
-                            //合同章
-                            imageData = ImageUtil.resizeImage(imageData, 540, 540);
+                            width = 540;
+                            heigh = 540;
                         } else {
-                            //非合同章
-                            imageData = ImageUtil.resizeImage(imageData, 480, 132);
+                            width = 480;
+                            heigh = 132;
                         }
+                        //宽度设置
+                        if (vo.getWidth() != null && vo.getWidth() != "" && Func.isNotEmpty(vo.getWidth()) && vo.getWidth() != "null" && !vo.getWidth().equals("null")) {
+                            double width2 = Func.toDouble(vo.getWidth());
+                            width = (int) (540 / 3.8 * width2);
+                        }
+                        //高度设置
+                        if (vo.getHeight() != null && vo.getHeight() != "" && Func.isNotEmpty(vo.getHeight()) && vo.getHeight() != "null" && !vo.getHeight().equals("null")) {
+                            double heigh2 = Func.toDouble(vo.getHeight());
+                            heigh = (int) (540 / 3.8 * heigh2);
+                        }
+                        imageData = ImageUtil.resizeImage(imageData, width, heigh);
                     }
 
                     //图片dpi设置
@@ -1034,9 +1046,10 @@ public class EVisaServiceImpl implements EVisaService {
         Object[] result = new Object[3];
         try {
             String sys_isonline = ParamCache.getValue(CommonConstant.SYS_ISONLINE);
-            if("20".equals(sys_isonline) || SystemUtils.isWindows() || SystemUtils.isMacOs()){
+            if ("20".equals(sys_isonline) || SystemUtils.isWindows() || SystemUtils.isMacOs()) {
                 SIGN_HOST = "47.115.117.246";
             }
+            System.out.println("电签Ip===:" + SIGN_HOST);
             PaperlessClient paperlessClient = new PaperlessClient(SIGN_HOST, SIGN_PORT, 240000000, 810000000);
             paperlessClient.setSSL(false);
             //*****************************************************************************
@@ -1296,9 +1309,10 @@ public class EVisaServiceImpl implements EVisaService {
     public String createSeal(EVisaMakeSealVO vo) {
         try {
             String sys_isonline = ParamCache.getValue(CommonConstant.SYS_ISONLINE);
-            if("20".equals(sys_isonline) || SystemUtils.isWindows() || SystemUtils.isMacOs()){
+            if ("20".equals(sys_isonline) || SystemUtils.isWindows() || SystemUtils.isMacOs()) {
                 SIGN_HOST = "47.115.117.246";
             }
+            System.out.println("电签Ip===:" + SIGN_HOST);
             PaperlessClient paperlessClient = new PaperlessClient(SIGN_HOST, SIGN_PORT, 240000000, 810000000);
             paperlessClient.setSSL(false);
 
@@ -1361,8 +1375,8 @@ public class EVisaServiceImpl implements EVisaService {
             } else if (responseHeadBean.getMessage().contains("is exist")) {
                 logger.info("【电签模块】{}", responseHeadBean.getMessage());
                 return "error";
-            }else{
-                return  responseBean.getHead().getMessage();
+            } else {
+                return responseBean.getHead().getMessage();
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -1374,9 +1388,10 @@ public class EVisaServiceImpl implements EVisaService {
     public List<CertBean> onlineCheckSeal(String pdfUrl) {
         try {
             String sys_isonline = ParamCache.getValue(CommonConstant.SYS_ISONLINE);
-            if("20".equals(sys_isonline) || SystemUtils.isWindows() || SystemUtils.isMacOs()){
+            if ("20".equals(sys_isonline) || SystemUtils.isWindows() || SystemUtils.isMacOs()) {
                 SIGN_HOST = "47.115.117.246";
             }
+            System.out.println("电签Ip===:" + SIGN_HOST);
             PaperlessClient paperlessClient = new PaperlessClient(SIGN_HOST, SIGN_PORT, 240000000, 810000000);
             paperlessClient.setSSL(false);
 
@@ -1435,23 +1450,23 @@ public class EVisaServiceImpl implements EVisaService {
         }
     }
 
-   // @Scheduled(cron = "0/40 * * * * ?")
+    // @Scheduled(cron = "0/40 * * * * ?")
     public void SignInfo() throws IOException {
         //获取字节
-        String pdfUrl="/Users/hongchuangyanfa/Desktop/excel/TJ06标咨询意见单.pdf";
+        String pdfUrl = "/Users/hongchuangyanfa/Desktop/excel/TJ06标咨询意见单.pdf";
         byte[] fileByte = IOUtils.toByteArray(new FileInputStream(new File(pdfUrl)));
 
         SealPdfVO pdfVO = new SealPdfVO();
         List<SealStrategyVO> sealStrategyVOS = new ArrayList<>();
 
 
-        String userId ="1794916072011603970";
+        String userId = "1794916072011603970";
         SealStrategyVO vo = new SealStrategyVO();
         vo.setSealCode(EVisaConstant.SIGN_SEAL_CODE + userId);
 
-        if(userId.length()<=EVisaConstant.USER_ID_SUB){
+        if (userId.length() <= EVisaConstant.USER_ID_SUB) {
             vo.setSealPassword(userId);
-        }else{
+        } else {
             vo.setSealPassword(userId.substring(0, EVisaConstant.USER_ID_SUB));
         }
         vo.setSealPerson("谭立剑");
@@ -1460,12 +1475,12 @@ public class EVisaServiceImpl implements EVisaService {
         vo.setSealType("3");
         vo.setKeyword("1808342935356309504");
 
-        String userId2 ="1794914652935954434";
+        String userId2 = "1794914652935954434";
         SealStrategyVO vo2 = new SealStrategyVO();
         vo2.setSealCode(EVisaConstant.SIGN_SEAL_CODE + userId2);
-        if(userId2.length()<=EVisaConstant.USER_ID_SUB){
+        if (userId2.length() <= EVisaConstant.USER_ID_SUB) {
             vo2.setSealPassword(userId2);
-        }else{
+        } else {
             vo2.setSealPassword(userId2.substring(0, EVisaConstant.USER_ID_SUB));
         }
         vo2.setSealPerson("黎军丰");
@@ -1474,12 +1489,12 @@ public class EVisaServiceImpl implements EVisaService {
         vo2.setSealType("3");
         vo2.setKeyword("1808342935364698112");
 
-        String userId3 ="1794914652935954434";
+        String userId3 = "1794914652935954434";
         SealStrategyVO vo3 = new SealStrategyVO();
         vo3.setSealCode(EVisaConstant.SIGN_SEAL_CODE + userId3);
-        if(userId3.length()<=EVisaConstant.USER_ID_SUB){
+        if (userId3.length() <= EVisaConstant.USER_ID_SUB) {
             vo3.setSealPassword(userId3);
-        }else{
+        } else {
             vo3.setSealPassword(userId3.substring(0, EVisaConstant.USER_ID_SUB));
         }
         vo3.setSealPerson("李梦君");
@@ -1488,12 +1503,12 @@ public class EVisaServiceImpl implements EVisaService {
         vo3.setSealType("3");
         vo3.setKeyword("1810847886083096576");
 
-        String userId4 ="104326754034";
+        String userId4 = "104326754034";
         SealStrategyVO vo4 = new SealStrategyVO();
         vo3.setSealCode(EVisaConstant.SIGN_SEAL_CODE + userId4);
-        if(userId4.length()<=EVisaConstant.USER_ID_SUB){
+        if (userId4.length() <= EVisaConstant.USER_ID_SUB) {
             vo4.setSealPassword(userId4);
-        }else{
+        } else {
             vo4.setSealPassword(userId4.substring(0, EVisaConstant.USER_ID_SUB));
         }
         vo4.setSealPerson("王涛");
@@ -1516,12 +1531,12 @@ public class EVisaServiceImpl implements EVisaService {
 
         // 6期
 
-        String userId6 ="1796388593051426817";
+        String userId6 = "1796388593051426817";
         SealStrategyVO vo6 = new SealStrategyVO();
         vo6.setSealCode(EVisaConstant.SIGN_SEAL_CODE + userId6);
-        if(userId6.length()<=EVisaConstant.USER_ID_SUB){
+        if (userId6.length() <= EVisaConstant.USER_ID_SUB) {
             vo6.setSealPassword(userId6);
-        }else{
+        } else {
             vo6.setSealPassword(userId6.substring(0, EVisaConstant.USER_ID_SUB));
         }
         vo6.setSealPerson("刘宝平");
@@ -1531,12 +1546,12 @@ public class EVisaServiceImpl implements EVisaService {
         vo6.setKeyword("1808342935356309504");
 
 
-        String userId7 ="1796388092851314689";
+        String userId7 = "1796388092851314689";
         SealStrategyVO vo7 = new SealStrategyVO();
         vo7.setSealCode(EVisaConstant.SIGN_SEAL_CODE + userId7);
-        if(userId7.length()<=EVisaConstant.USER_ID_SUB){
+        if (userId7.length() <= EVisaConstant.USER_ID_SUB) {
             vo7.setSealPassword(userId7);
-        }else{
+        } else {
             vo7.setSealPassword(userId7.substring(0, EVisaConstant.USER_ID_SUB));
         }
         vo7.setSealPerson("李富生");
@@ -1546,12 +1561,12 @@ public class EVisaServiceImpl implements EVisaService {
         vo7.setKeyword("1808342935364698112");
 
 
-        String userId8 ="104326754036";
+        String userId8 = "104326754036";
         SealStrategyVO vo8 = new SealStrategyVO();
         vo8.setSealCode(EVisaConstant.SIGN_SEAL_CODE + userId8);
-        if(userId8.length()<=EVisaConstant.USER_ID_SUB){
+        if (userId8.length() <= EVisaConstant.USER_ID_SUB) {
             vo8.setSealPassword(userId8);
-        }else{
+        } else {
             vo8.setSealPassword(userId8.substring(0, EVisaConstant.USER_ID_SUB));
         }
         vo8.setSealPerson("许利利");
@@ -1571,10 +1586,10 @@ public class EVisaServiceImpl implements EVisaService {
         vo9.setCompanySeal(true);
         vo9.setKeyword("1808342935377281024");
         //sealStrategyVOS.add(vo);
-       // sealStrategyVOS.add(vo2);
+        // sealStrategyVOS.add(vo2);
         //sealStrategyVOS.add(vo3);
         // 3期
-       // sealStrategyVOS.add(vo4);
+        // sealStrategyVOS.add(vo4);
         // 6期
         sealStrategyVOS.add(vo6);
         sealStrategyVOS.add(vo7);
@@ -1602,8 +1617,10 @@ public class EVisaServiceImpl implements EVisaService {
         }
 
     }
+
     /**
-     *      单张PDF批量电签,返回电签后的PDF
+     * 单张PDF批量电签,返回电签后的PDF
+     *
      * @param
      * @return
      */
@@ -1652,11 +1669,11 @@ public class EVisaServiceImpl implements EVisaService {
     /**
      * 安心 - 签章
      */
-    public Object[] signPdfByAXQZ(SealPdfVO pdfVO, String loPdfurl,String outPdfUrl) {
+    public Object[] signPdfByAXQZ(SealPdfVO pdfVO, String loPdfurl, String outPdfUrl) {
         Object[] result = new Object[3];
         try {
             String sys_isonline = ParamCache.getValue(CommonConstant.SYS_ISONLINE);
-            if("20".equals(sys_isonline) || SystemUtils.isWindows() || SystemUtils.isMacOs()){
+            if ("20".equals(sys_isonline) || SystemUtils.isWindows() || SystemUtils.isMacOs()) {
                 SIGN_HOST = "47.115.117.246";
             }
             PaperlessClient paperlessClient = new PaperlessClient(SIGN_HOST, SIGN_PORT, 240000000, 810000000);
@@ -1684,7 +1701,7 @@ public class EVisaServiceImpl implements EVisaService {
             List<PdfBean> pdfBeans = new ArrayList<>();
             PdfBean pdfBean = new PdfBean();
             pdfBean.setBizSerialNo(GUIDUtil.generateId());
-            pdfBean.setInputSource("/mnt/bladesign"+loPdfurl);
+            pdfBean.setInputSource("/mnt/bladesign" + loPdfurl);
             pdfBean.setInputType(BaseConstants.INPUT_TYPE_FILEPATH);
             pdfBeans.add(pdfBean);
             requestBody.setPdfBeans(pdfBeans);
@@ -1697,7 +1714,7 @@ public class EVisaServiceImpl implements EVisaService {
             requestBody.setSealStrategies(sealStrategies);
 
             //签章后文件保存地址,不为空时,直接将签章文件保存在此地址,不再返回签章后文档数据;ftp:auto
-            requestBody.setOutputFilepath("/mnt/bladesign"+outPdfUrl);
+            requestBody.setOutputFilepath("/mnt/bladesign" + outPdfUrl);
 
             //时间戳方式,默认为0;0:实时访问CFCA 时间戳服务;1:使用从CFCA购置并在本地部署的时间戳服务器产品;
             requestBody.setTimestampChannel(BaseConstants.TIME_STAMP_CHANNEL_CFCA);

+ 0 - 3
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/ScrDataServiceImpl.java

@@ -29,9 +29,6 @@ public class ScrDataServiceImpl implements ScrDataService {
     public void sctTaskBatch(ScrSignInfoVO taskApp) throws Exception {
         // 电签检查
 
-
-
-
     }
 
     /**

+ 1 - 1
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/utils/PdfSignatureInfo.java

@@ -22,7 +22,7 @@ public class PdfSignatureInfo{
 
 
     //
-    public static void main(String[] args) throws IOException {
+    public static void main11(String[] args) throws IOException {
         String pdfUrl = "/Users/hongchuangyanfa/Downloads/727dd864f9569e802692294f9b8fbb97.pdf";
         PDDocument document = PDDocument.load(new File(pdfUrl));
         for (int i=0 ;i<document.getPages().getCount();i++) {

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

@@ -1895,7 +1895,7 @@ public class ExcelTabController extends BladeController {
                             //数字化节点附件处理
                             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)){
+                            //if(ObjectUtil.isNotEmpty(wbsTreeContract.getNodeClass())&&wbsTreeContract.getNodeClass().equals(2)){
                                 InformationQuery iq= informationQueryClient.getInfoByWbsId(wbsTreeContract.getPKeyId());
                                 if(iq.getNodePdfUrl()==null||iq.getEVisaPdfPage()==null||iq.getEVisaPdfPage()==0||iq.getEVisaPdfSize()==null||!iq.getNodePdfUrl().equals(netUrl)){
                                     String pdfPage = FileUtils.getPdfNum(netUrl);
@@ -1906,7 +1906,7 @@ public class ExcelTabController extends BladeController {
                                     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 + "'");

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

@@ -2166,6 +2166,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                                     } else {
                                         byte[] byteNew = IOUtils.toByteArray(imageIn);
                                         bytes = CommonUtil.compressImage(byteNew);
+                                      //  bytes = IOUtils.toByteArray(imageIn);
                                     }
                                     // 这里根据实际需求选择图片类型
                                     int pictureIdx = workbook.addPicture(bytes, 6);

File diff suppressed because it is too large
+ 388 - 373
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java


+ 4 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/SignPfxFilePreServiceImpl.java

@@ -87,11 +87,11 @@ public class SignPfxFilePreServiceImpl implements ISignPfxFilePreService {
                 Map imageSize = FileUtils.getImageSize(inputStreamByUrl1);
                 Integer width = (Integer) imageSize.get("width");
                 Integer height = (Integer) imageSize.get("height");
-                wide = PdfAddimgUtil.pxToCm(width);
-                high = PdfAddimgUtil.pxToCm(height);
+                wide = CommonUtil.pxToCm(width);
+                high = CommonUtil.pxToCm(height);
             }else {
-                wide = PdfAddimgUtil.pxToCm(FileUtils.getImageWidth(file1));
-                high =PdfAddimgUtil.pxToCm(FileUtils.getImageHeight(file1));
+                wide = CommonUtil.pxToCm(FileUtils.getImageWidth(file1));
+                high =CommonUtil.pxToCm(FileUtils.getImageHeight(file1));
             }
         }
         //图片地址

+ 66 - 63
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/FileUtils.java

@@ -15,11 +15,9 @@ import com.sun.image.codec.jpeg.JPEGImageEncoder;
 import org.apache.commons.lang.StringUtils;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.poi.hssf.usermodel.HSSFPrintSetup;
-import org.apache.poi.ss.usermodel.ClientAnchor;
-import org.apache.poi.ss.usermodel.PrintSetup;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.WorkbookFactory;
+import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.Units;
 import org.apache.poi.xssf.usermodel.XSSFPrintSetup;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
@@ -308,6 +306,7 @@ public class FileUtils {
 
     /**
      * 根据宽度和高度改变图片尺寸
+     *
      * @param sourceImagePath
      * @param targetImagePath
      * @param maxWidth
@@ -315,12 +314,12 @@ public class FileUtils {
      * @throws IOException
      */
     public static void compressImage(String sourceImagePath, String targetImagePath, double maxWidth, double maxHeight) throws Exception {
-       InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl(sourceImagePath);
+        InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl(sourceImagePath);
         // 读取源图片
         BufferedImage originalImage = ImageIO.read(inputStreamByUrl);
         // 给定的目标宽度和高度
-        int targetWidth = (int)Math.round(maxWidth); // 目标宽度
-        int targetHeight = (int)Math.round(maxHeight); // 目标高度
+        int targetWidth = (int) Math.round(maxWidth); // 目标宽度
+        int targetHeight = (int) Math.round(maxHeight); // 目标高度
         // 创建新的图片对象
         BufferedImage resizedImage = new BufferedImage(targetWidth, targetHeight, originalImage.getType());
         // 使用 Graphics2D 进行绘制
@@ -330,12 +329,13 @@ public class FileUtils {
         // 保存缩放后的图片
         ImageIO.write(resizedImage, getFormat(sourceImagePath), new File(targetImagePath));
     }
+
     public static void compressImage(InputStream inputStream, String targetImagePath, double maxWidth, double maxHeight) throws Exception {
         // 读取源图片
         BufferedImage originalImage = ImageIO.read(inputStream);
         // 给定的目标宽度和高度
-        int targetWidth = (int)Math.round(maxWidth); // 目标宽度
-        int targetHeight = (int)Math.round(maxHeight); // 目标高度
+        int targetWidth = (int) Math.round(maxWidth); // 目标宽度
+        int targetHeight = (int) Math.round(maxHeight); // 目标高度
         // 创建新的图片对象
         BufferedImage resizedImage = new BufferedImage(targetWidth, targetHeight, originalImage.getType());
         // 使用 Graphics2D 进行绘制
@@ -348,6 +348,7 @@ public class FileUtils {
 
     /**
      * 获取图片的宽度
+     *
      * @param file
      * @return
      * @throws IOException
@@ -361,12 +362,13 @@ public class FileUtils {
 
     /**
      * 传入流获取图片的高度和宽度
+     *
      * @param is
      * @return
      * @throws IOException
      */
     public static Map getImageSize(InputStream is) throws IOException {
-            BufferedImage image = ImageIO.read(is);
+        BufferedImage image = ImageIO.read(is);
         int width = image.getWidth();
         int height = image.getHeight();
         HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
@@ -378,6 +380,7 @@ public class FileUtils {
 
     /**
      * 获取图片的高度
+     *
      * @param file
      * @return
      * @throws IOException
@@ -502,13 +505,14 @@ public class FileUtils {
         }
         return fileInputStream;
     }
+
     //根据流存储文件到本地
     public static void saveFile(InputStream inputStream, String filePath) {
 
         String localFilePath = filePath; // 本地文件路径
 
         try (
-             FileOutputStream outputStream = new FileOutputStream(localFilePath)) {
+                FileOutputStream outputStream = new FileOutputStream(localFilePath)) {
 
             byte[] buffer = new byte[1024];
             int length;
@@ -526,7 +530,7 @@ public class FileUtils {
 
     }
 
-    public static String getNetUrl(String fileUrl){
+    public static String getNetUrl(String fileUrl) {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         String file_path2 = getSysLocalFileUrl();
         String sys_file_net_url = ParamCache.getValue(CommonConstant.SYS_FILE_NET_URL);
@@ -534,11 +538,11 @@ public class FileUtils {
 
         if (fileUrl.indexOf("aliyuncs.com") >= 0) {
             return fileUrl;
-        }else {
+        } else {
             file_path2 = file_path;
         }
 
-       String path = sys_file_net_url + fileUrl.replaceAll("//", "/").replaceAll(file_path2, "");
+        String path = sys_file_net_url + fileUrl.replaceAll("//", "/").replaceAll(file_path2, "");
         return path;
     }
 
@@ -546,27 +550,27 @@ public class FileUtils {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         String sys_isonline = ParamCache.getValue(CommonConstant.SYS_ISONLINE);
 
-        if(sys_isonline.equals("1")){ //正式环境
+        if (sys_isonline.equals("1")) { //正式环境
             if (SystemUtils.isMacOs()) {
                 file_path = "/Users/hongchuangyanfa/Desktop/";
             } else if (SystemUtils.isWindows()) {
                 file_path = "C://upload//";
             }
-        }else if(sys_isonline.equals("2")){ //109测试环境
+        } else if (sys_isonline.equals("2")) { //109测试环境
             if (SystemUtils.isMacOs()) {
                 file_path = "/www/wwwroot/Users/hongchuangyanfa/Desktop/";
             } else if (SystemUtils.isWindows()) {
                 file_path = "C://upload//";
             }
-        }else if(sys_isonline.equals("20")){ //183
+        } else if (sys_isonline.equals("20")) { //183
             if (SystemUtils.isLinux()) {
                 file_path = "/home/www/wwwroot/Users/hongchuangyanfa/Desktop/";
-            }else if (SystemUtils.isMacOs()) {
+            } else if (SystemUtils.isMacOs()) {
                 file_path = "/Users/hongchuangyanfa/Desktop/";
             } else if (SystemUtils.isWindows()) {
                 file_path = "C://upload//";
             }
-        }else{  //本地环境
+        } else {  //本地环境
             if (SystemUtils.isMacOs()) {
                 file_path = "/Users/hongchuangyanfa/Desktop/";
             } else if (SystemUtils.isWindows()) {
@@ -621,11 +625,11 @@ public class FileUtils {
                 CellRange mergedCell = sheet.getCellRange(oldcell.getRow(), oldcell.getColumn());
                 String data = mergedCell.getDataValidation().getErrorMessage();
                 int k = 0;
-                if(Func.isNumeric(data)){
+                if (Func.isNumeric(data)) {
                     k = Func.toInt(data);
                 }
                 if (maxVal < k) {
-                        maxVal = k;
+                    maxVal = k;
                 }
             }
 
@@ -635,23 +639,23 @@ public class FileUtils {
                 CellRange mergedCell = sheet.getCellRange(oldcell.getRow(), oldcell.getColumn());
                 String data = mergedCell.getDataValidation().getErrorMessage();
                 if (StringUtils.isEmpty(data)) {
-                    if(maxVal<=0){
+                    if (maxVal <= 0) {
                         j = j + 1;
-                    }else{
-                        maxVal = maxVal+1;
-                        j=maxVal;
+                    } else {
+                        maxVal = maxVal + 1;
+                        j = maxVal;
                     }
                 } else {
-                    if(Func.isNumeric(data)){
+                    if (Func.isNumeric(data)) {
                         j = Func.toInt(data);
-                    }else {
+                    } else {
                         j = Func.toInt((data.trim().replaceAll("\r|\n", "")).split(":")[1] + "");
                     }
                 }
                 // 目标表添加备注信息
-                sheet2.getCellRange(oldcell.getRow(), oldcell.getColumn()).getDataValidation().setErrorMessage(j+"");
-                mergedCell.getDataValidation().setErrorMessage(j+"");
-                oldcell.getDataValidation().setErrorMessage(j+"");
+                sheet2.getCellRange(oldcell.getRow(), oldcell.getColumn()).getDataValidation().setErrorMessage(j + "");
+                mergedCell.getDataValidation().setErrorMessage(j + "");
+                oldcell.getDataValidation().setErrorMessage(j + "");
                 mergedCell.setText(j + "");
                 dataMap.put("y1", oldcell.getRow());
                 dataMap.put("y2", oldcell.getLastRow());
@@ -729,7 +733,7 @@ public class FileUtils {
                         cell1.attr("x2", xyMap.get("x2") + "");
                         cell1.attr("y1", xyMap.get("y1") + "");
                         cell1.attr("y2", xyMap.get("y2") + "");
-                        cell1.attr("exceVal",html);
+                        cell1.attr("exceVal", html);
                     }
                 }
             }
@@ -737,7 +741,7 @@ public class FileUtils {
             File writeFile = new File(htmlUrl);
             FileUtil.writeToFile(writeFile, doc1.html(), Boolean.parseBoolean("UTF-8"));
             if (html2.exists()) {
-             //   html2.delete();
+                //   html2.delete();
             }
             wb2.dispose();
             wb.dispose();
@@ -747,7 +751,6 @@ public class FileUtils {
     }
 
 
-
     /**
      * 在线编辑excel 操作
      *
@@ -791,7 +794,7 @@ public class FileUtils {
                 CellRange mergedCell = sheet.getCellRange(oldcell.getRow(), oldcell.getColumn());
                 String data = mergedCell.getDataValidation().getErrorMessage();
                 int k = 0;
-                if(Func.isNumeric(data)){
+                if (Func.isNumeric(data)) {
                     k = Func.toInt(data);
                 }
                 if (maxVal < k) {
@@ -805,22 +808,22 @@ public class FileUtils {
                 CellRange mergedCell = sheet.getCellRange(oldcell.getRow(), oldcell.getColumn());
                 String data = mergedCell.getDataValidation().getErrorMessage();
                 if (StringUtils.isEmpty(data)) {
-                    if(maxVal<=0){
+                    if (maxVal <= 0) {
                         j = j + 1;
-                    }else{
-                        maxVal = maxVal+1;
-                        j=maxVal;
+                    } else {
+                        maxVal = maxVal + 1;
+                        j = maxVal;
                     }
                 } else {
-                    if(Func.isNumeric(data)){
+                    if (Func.isNumeric(data)) {
                         j = Func.toInt(data);
-                    }else {
+                    } else {
                         j = Func.toInt((data.trim().replaceAll("\r|\n", "")).split(":")[1] + "");
                     }
                 }
                 // 目标表添加备注信息
-                sheet2.getCellRange(oldcell.getRow(), oldcell.getColumn()).getDataValidation().setErrorMessage(j+"");
-                mergedCell.getDataValidation().setErrorMessage(j+"");
+                sheet2.getCellRange(oldcell.getRow(), oldcell.getColumn()).getDataValidation().setErrorMessage(j + "");
+                mergedCell.getDataValidation().setErrorMessage(j + "");
                 mergedCell.setText(j + "");
                 dataMap.put("y1", oldcell.getRow());
                 dataMap.put("y2", oldcell.getLastRow());
@@ -836,11 +839,11 @@ public class FileUtils {
                 String data = mergedCell.getDataValidation().getErrorMessage();
                 Map<String, Integer> dataMap = new HashMap<>();
                 if (StringUtils.isEmpty(data)) {
-                    if(maxVal<=0){
+                    if (maxVal <= 0) {
                         j = j + 1;
-                    }else{
-                        maxVal = maxVal+1;
-                        j=maxVal;
+                    } else {
+                        maxVal = maxVal + 1;
+                        j = maxVal;
                     }
                     // null 需要添加坐标
                     dataMap.put("y1", oldcell.getRow());
@@ -849,13 +852,13 @@ public class FileUtils {
                     dataMap.put("x2", oldcell.getLastColumn());
                     xyList.put(j + "", dataMap);
                 } else {
-                    if(Func.isNumeric(data)){
+                    if (Func.isNumeric(data)) {
                         j = Func.toInt(data);
-                    }else {
+                    } else {
                         j = Func.toInt((data.trim().replaceAll("\r|\n", "")).split(":")[1] + "");
                     }
                 }
-                sheet2.getCellRange(oldcell.getRow(), oldcell.getColumn()).getDataValidation().setErrorMessage(j+"");
+                sheet2.getCellRange(oldcell.getRow(), oldcell.getColumn()).getDataValidation().setErrorMessage(j + "");
                 mergedCell.setText(j + "");
 
             }
@@ -897,7 +900,7 @@ public class FileUtils {
                         cell1.attr("x2", xyMap.get("x2") + "");
                         cell1.attr("y1", xyMap.get("y1") + "");
                         cell1.attr("y2", xyMap.get("y2") + "");
-                        cell1.attr("exceVal",html);
+                        cell1.attr("exceVal", html);
                     }
                 }
             }
@@ -916,8 +919,6 @@ public class FileUtils {
     }
 
 
-
-
     public static boolean getLicense() {
         boolean result = false;
         try {
@@ -931,7 +932,7 @@ public class FileUtils {
         return result;
     }
 
-    public static void excel2pdf(String sourceFilePath, String desFilePathd ){
+    public static void excel2pdf(String sourceFilePath, String desFilePathd) {
         // 验证License 若不验证则转化出的pdf文档会有水印产生
         if (!getLicense()) {
             return;
@@ -947,13 +948,13 @@ public class FileUtils {
             worksheet.getPageSetup().setPaperSize(com.aspose.cells.PaperSizeType.PAPER_A_4);
             worksheet.getPageSetup().setLeftMargin(1.9);
             worksheet.getPageSetup().setRightMargin(1.9);
-            int[] autoDrawSheets={3};
+            int[] autoDrawSheets = {3};
             //当excel中对应的sheet页宽度太大时,在PDF中会拆断并分页。此处等比缩放。
-            autoDraw(wb,autoDrawSheets);
+            autoDraw(wb, autoDrawSheets);
 
-            int[] showSheets={0};
+            int[] showSheets = {0};
             //隐藏workbook中不需要的sheet页。
-            printSheetPage(wb,showSheets);
+            printSheetPage(wb, showSheets);
             wb.save(desFilePathd, pdfSaveOptions);
             System.out.println("完毕");
 
@@ -965,11 +966,12 @@ public class FileUtils {
 
     /**
      * 设置打印的sheet 自动拉伸比例
+     *
      * @param wb
      * @param page 自动拉伸的页的sheet数组
      */
-    public static void autoDraw(Workbook wb,int[] page){
-        if(null!=page&&page.length>0){
+    public static void autoDraw(Workbook wb, int[] page) {
+        if (null != page && page.length > 0) {
             for (int i = 0; i < page.length; i++) {
                 wb.getWorksheets().get(i).getHorizontalPageBreaks().clear();
                 wb.getWorksheets().get(i).getVerticalPageBreaks().clear();
@@ -980,16 +982,17 @@ public class FileUtils {
 
     /**
      * 隐藏workbook中不需要的sheet页。
+     *
      * @param wb
      * @param page 显示页的sheet数组
      */
-    public static void printSheetPage(Workbook wb,int[] page){
-        for (int i= 1; i < wb.getWorksheets().getCount(); i++)  {
+    public static void printSheetPage(Workbook wb, int[] page) {
+        for (int i = 1; i < wb.getWorksheets().getCount(); i++) {
             wb.getWorksheets().get(i).setVisible(false);
         }
-        if(null==page||page.length==0){
+        if (null == page || page.length == 0) {
             wb.getWorksheets().get(0).setVisible(true);
-        }else{
+        } else {
             for (int i = 0; i < page.length; i++) {
                 wb.getWorksheets().get(i).setVisible(true);
             }

+ 3 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/PdfAddimgUtil.java

@@ -18,6 +18,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+import static org.springblade.common.utils.CommonUtil.cmToPx;
+
 public class PdfAddimgUtil {
     private static final double INCH_TO_CM = 2.54;
 
@@ -225,15 +227,7 @@ public class PdfAddimgUtil {
         stamper.close();
         reader.close();
     }
-    public static int cmToPx(double cm) {
-        double pixelsPerCm = 90 / INCH_TO_CM;
-        return (int) Math.round(cm * pixelsPerCm);
-    }
-    public static double pxToCm(int px) {
-        double cmPerPixel = INCH_TO_CM / 90;
-        //保留两位小数
-        return Math.round(px * cmPerPixel * 100) / 100.0;
-    }
+
     /**
      * 【功能描述:添加图片和文字水印】 【功能详细描述:功能详细描述】
      *

+ 19 - 105
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -121,10 +121,8 @@ public class TaskController extends BladeController {
     private final ProjectClient projectClient;
     private final ContractClient contractClient;
     private final JdbcTemplate jdbcTemplate;
-    private final MyJdbcTemplate myJdbcTemplate;
     private final BladeRedis bladeRedis;
     private final TaskClient taskClient;
-    private final IUserClient iUserClient;
     private final ArchiveFileTaskClient archiveFileTaskClient;
     private final ContractMeterPeriodServiceImpl contractMeterPeriodService;
     private final ContractMeterPeriodMapper contractMeterPeriodMapper;
@@ -169,7 +167,6 @@ public class TaskController extends BladeController {
     // oss
     private final NewIOSSClient newIOSSClient;
 
-    private final WebSocketClient webSocketClient;
 
     @GetMapping("/name")
     @ApiOperationSupport(order = 1)
@@ -373,6 +370,8 @@ public class TaskController extends BladeController {
                                 interimPayCertificateItemService.updateById(item);
                             }
                     }
+                    //发送短信
+                    interimPayCertificateItemService.sendJLSmg(taskId);
                     return R.data(200, aopParamsSet, "操作成功");
                 }
 
@@ -2842,8 +2841,7 @@ public class TaskController extends BladeController {
                 meterPdfInfo22(reportId + "", task.getMeterTaskType() - 1, taskType);
             }
 
-            taskMeterPdfInfo2(task.getId(),reportId,task.getMeterTaskType() - 1, taskType);
-
+            interimPayCertificateService.taskMeterPdfInfo2(task.getId()+"",reportId,task.getMeterTaskType() - 1);
             return R.data(200, aopParamsSet, "操作成功");
         }
         return R.fail("操作失败");
@@ -3923,104 +3921,6 @@ public class TaskController extends BladeController {
 
     //
 
-
-    @Async
-    public void taskMeterPdfInfo2(@RequestParam Long taskId, @RequestParam String reportId, @RequestParam Integer type, @RequestParam Integer taskType) {
-        try {
-            Task task = jdbcTemplate.query("SELECT * FROM u_task WHERE id = ?", new Object[]{taskId}, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
-            if (task == null) {
-                System.out.println("未找到任务相关信息");
-            }
-            if (task.getStatus() == 3) {
-                System.out.println("已废除无法查看报表");
-            }
-
-            String sql = "";
-            if (type == 0) {
-                if(Func.isEmpty(reportId) || reportId==null){
-                    sql = "select * from s_interim_pay_certificate where is_deleted=0 and contract_period_id = "+task.getFormDataId()+" ";
-                }else{
-                    sql = "select * from s_interim_pay_certificate where is_deleted=0 and id = "+reportId+"";
-                }
-            } else {
-                if(Func.isEmpty(reportId) || reportId==null){
-                    sql = "select * from s_material_start_statement where is_deleted=0 and meter_period_id = "+task.getFormDataId()+"";
-                }else{
-                    sql = "select * from s_material_start_statement where is_deleted=0 and id = "+reportId+"";
-                }
-            }
-            Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(sql);
-            String pdfUrl = stringObjectMap.get("raw_url")+"";
-            if (pdfUrl.length()<=10) {
-                calculate(reportId, type, taskType);
-                System.out.println("电签报表生成中,等2分钟刷新查看");
-            } else {
-                List<String> pdfSignIds = PdfAddimgUtil.getPdfSignIds(pdfUrl);
-                if (pdfSignIds.size() > 0) {
-                    String ids = String.join(",", pdfSignIds);
-                    String sqlp = "SELECT * from u_task_parallel WHERE process_instance_id = '" + task.getProcessInstanceId() + "' and `status`=2 and is_deleted=0";
-                    List<TaskParallel> taskParallels = jdbcTemplate.query(sqlp, new BeanPropertyRowMapper<>(TaskParallel.class));
-                    List<Map<String, Object>> maps = new ArrayList<>();
-                    for (TaskParallel parallel : taskParallels) {
-                        String sqlinfo = "SELECT * from ( SELECT DISTINCT a.id,a.pyzbx ,a.pyzby,a.project_id,(SELECT signature_file_url from m_sign_pfx_file where is_register=1 and certificate_user_id='" + parallel.getTaskUser() + "' and is_deleted=0  ) as signature_file_url,a.type from m_textdict_info a where  a.type =2 and a.id in (" + ids + ")  and sig_role_id in (SELECT DISTINCT c.role_id from m_project_assignment_user c  where c.contract_id=" + task.getContractId() + " and user_id=" + parallel.getTaskUser() + " and c.is_deleted=0 ) ) x where x.signature_file_url is not null ";
-                        List<Map<String, Object>> maps2 = jdbcTemplate.queryForList(sqlinfo);
-                        Map<String, List<Map<String, Object>>> peopleByAge = maps2.stream()
-                                .collect(Collectors.groupingBy(hada -> (Func.toStr(hada.get("id")))));
-
-                        for (String keyId : peopleByAge.keySet()) {
-                            int exId = 0;
-                            List<Map<String, Object>> keyList = peopleByAge.get(keyId);
-                            if (keyList != null && keyList.size() == 1) {
-                                maps.addAll(keyList);
-                                exId = 1;
-                            } else if (keyList != null && keyList.size() >= 2) {
-                                for (Map<String, Object> datax : keyList) {
-                                    if ((datax.get("project_id") + "").equals(task.getProjectId())) {
-                                        maps.add(datax);
-                                        exId = 1;
-                                    }
-                                }
-                            }
-                            if (exId == 0) {
-                                maps.add(keyList.get(0));
-                            }
-                        }
-                    }
-
-                    if (Func.isNotEmpty(maps) || maps.size() >= 1) {
-                        InputStream ossInputStream = CommonUtil.getOSSInputStream(pdfUrl);
-                        String localPdfPath = FileUtils.getSysLocalFileUrl() + "/pdf//" + task.getId() + ".pdf";
-                        CommonUtil.convert(ossInputStream, localPdfPath);
-                        PdfAddimgUtil.pdfAddImgInfo(localPdfPath, maps);
-                        String sys_isonline = ParamCache.getValue(CommonConstant.SYS_ISONLINE);
-                        if (sys_isonline.equals("20")) {
-                            BladeFile bladeFile = this.newIOSSClient.uploadFile(task.getId() + ".pdf", localPdfPath);
-                            if (bladeFile != null && ObjectUtils.isNotEmpty(bladeFile.getLink())) {
-                                if (type == 0) {
-                                    jdbcTemplate.update("update s_interim_pay_certificate set pre_pdf_url ='"+bladeFile.getLink()+"' where id="+reportId);
-                                } else {
-                                    jdbcTemplate.update("update s_material_start_statement set pre_pdf_url ='"+bladeFile.getLink()+"' where id="+reportId);
-                                }
-                            }
-                        } else {
-                            System.out.println("");
-                        }
-
-                    } else {
-                        System.out.println("");
-                    }
-
-                } else {
-                    System.out.println("");
-                }
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        System.out.println("");
-    }
-
-
     @GetMapping("/meterPdfInfo")
     @ApiOperationSupport(order = 22)
     @ApiOperation(value = "计量生成Pdf", notes = "计量生成Pdf")
@@ -4098,9 +3998,9 @@ public class TaskController extends BladeController {
             String sqlUpdate = "update s_interim_pay_certificate set file_url_list = '"+string +"',raw_url = '"+rawPdfUrL+"' where id = "+report.getId();
             jdbcTemplate.execute(sqlUpdate);
             if (taskType != 10) {
+                interimPayCertificateService.taskMeterPdfInfo2("",report.getPeriodId()+"",report.getType());
                 addSignTaskBatch(report);
             }
-
             return R.data(rawPdfUrL);
         }else{
             reportResults = formulaClient.formulaExecute3(report.getContractId(), report.getId(), report.getType(),report.getPeriodId(),report.getProjectId());
@@ -4388,6 +4288,7 @@ public class TaskController extends BladeController {
                 // 添加电签任务列表
                 if (taskType != 10) {
                     addSignTaskBatch(report);
+                    interimPayCertificateService.taskMeterPdfInfo2("",report.getPeriodId()+"",report.getType());
                 }
             }
         }
@@ -4575,7 +4476,7 @@ public class TaskController extends BladeController {
                 String UPSqlJL = " update u_task_parallel a set a.e_visa_status=1,e_visa_content='电签成功',initiative=2 where sort in( SELECT a.fixed_flow_branch_sort from u_task b,u_fixed_flow_link a where b.`status` in(1,2) and b.form_data_id='" + report.getPeriodId() + "' and a.fixed_flow_id=b.fixed_flow_id and a.flow_task_type=2 ) and a.process_instance_id in(SELECT process_instance_id from u_task b where b.`status` in(1,2) and b.form_data_id='" + report.getPeriodId() + "')";
                 String DeSql = "delete from u_task_batch where task_parallel_id in(select b.process_instance_id from u_task b where b.`status` in(1,2) and b.form_data_id=" + report.getPeriodId() + ")";
                 //删除以前存在的电签
-                String sql = " insert INTO u_task_batch(id,task_parallel_id,json_data,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,nick_name,sign_format,sign_type) " + " SELECT a.id,a.process_instance_id,json_object('approvalFileList',json_array(),'approvalType',b.approval_type,'comment','','flag','OK','formDataId',b.form_data_id,'parallelProcessInstanceId',a.parallel_process_instance_id,'pass',true,'taskId',b.id) as  json_data,a.task_user,a.create_dept,a.create_time,a.update_user,a.update_time,1 as status,0 as is_deleted,a.task_user_name as nick_name ,1 as sign_format,1 as sign_type from u_task_parallel a,u_task b,u_fixed_flow_link c where b.`status` in(1,2) and  a.process_instance_id=b.process_instance_id and c.flow_task_type!=2 and a.sort = c.fixed_flow_branch_sort and c.fixed_flow_id=b.fixed_flow_id and b.form_data_id= '" + report.getPeriodId() + "'";
+                String sql = "insert INTO u_task_batch(id,task_parallel_id,json_data,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,nick_name,sign_format,sign_type) " + " SELECT a.id,a.process_instance_id,json_object('approvalFileList',json_array(),'approvalType',b.approval_type,'comment','','flag','OK','formDataId',b.form_data_id,'parallelProcessInstanceId',a.parallel_process_instance_id,'pass',true,'taskId',b.id) as  json_data,a.task_user,a.create_dept,a.create_time,a.update_user,a.update_time,1 as status,0 as is_deleted,a.task_user_name as nick_name ,1 as sign_format,1 as sign_type from u_task_parallel a,u_task b,u_fixed_flow_link c where b.`status` in(1,2) and  a.process_instance_id=b.process_instance_id and c.flow_task_type!=2 and a.sort = c.fixed_flow_branch_sort and c.fixed_flow_id=b.fixed_flow_id and b.form_data_id= '" + report.getPeriodId() + "'";
 
                 jdbcTemplate.execute(DeSql);
                 jdbcTemplate.execute(UPSql);
@@ -5244,6 +5145,8 @@ public class TaskController extends BladeController {
                 vo.setSealPerson(file.getCertificateUserName());
                 //设置签字文件
                 vo.setImageUrl(file.getSignatureFileUrl());
+                vo.setWidth(file.getWide()+"");
+                vo.setHeight(file.getHigh()+"");
                 vo.setSealType("3");
                 vo.setKeyword(user.getName() + user.getPhone().substring(0, 3));
                 sealStrategyVOS.add(vo);
@@ -5269,6 +5172,8 @@ public class TaskController extends BladeController {
                     vo.setSealCode(EVisaConstant.SIGN_SEAL_CODE + file.getId());
                     vo.setSealPassword(file.getCertificatePassword());
                     vo.setSealPerson(file.getCertificateUserName() + "" + System.currentTimeMillis());
+                    vo.setWidth(file.getWide()+"");
+                    vo.setHeight(file.getHigh()+"");
                     //设置签字文件
                     vo.setImageUrl(file.getSignatureFileUrl());
                     vo.setSealType("3");
@@ -5378,4 +5283,13 @@ public class TaskController extends BladeController {
 
         return reData;
     }
+
+    @PostMapping("/taskMeterPdfInfo2")
+    @ApiOperationSupport(order = 28)
+    @ApiOperation(value = "未签字电签操作", notes = "未签字电签操作")
+    public R<Object> taskMeterPdfInfo2(@RequestParam String taskId, @RequestParam String reportId, @RequestParam Integer meterType) {
+        interimPayCertificateService.taskMeterPdfInfo2(taskId,reportId,meterType);
+        return R.data("操作成公");
+    }
+
 }

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InterimPayCertificateMapper.xml

@@ -32,7 +32,7 @@
         where id = #{id}
     </select>
     <select id="page2" resultType="org.springblade.meter.vo.InterimPayCertificateVO">
-        select *,
+        select IFNULL(pre_pdf_url,raw_url) as pre_pdf_url,sipc.*,
                (select id from u_task where form_data_id = sipc.contract_period_id and is_deleted = 0 and status in (1,2) limit 1) as taskId
         from s_interim_pay_certificate sipc
         where contract_id = #{pay.contractId} and is_deleted = 0

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml

@@ -301,7 +301,7 @@
         order by sort,create_time
     </select>
     <select id="getNodeData" resultType="org.springblade.meter.vo.WbsFileVO">
-        select name as dataName,pdf_url as pdfUrl,e_visa_pdf_url as eVisaPdfUrl, uiq.id as selectId,
+        select name as dataName,IFNULL(node_pdf_url,pdf_url) as pdfUrl,e_visa_pdf_url as eVisaPdfUrl, uiq.id as selectId,
                (select node_type from m_wbs_tree_contract wtc where wtc.p_key_id = uiq.wbs_id) as nodeType,
                (select IFNULL(ancestors,wtc.id) from m_wbs_tree_contract wtc where wtc.p_key_id = uiq.wbs_id) as ancestors,
                (select node_name from m_wbs_tree_contract wtc where wtc.p_key_id = uiq.wbs_id) as nodeName,

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInterimPayCertificateItemService.java

@@ -3,6 +3,7 @@ package org.springblade.meter.service;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.meter.entity.InterimPayCertificateItem;
 import org.springblade.meter.vo.MonthlyReportVo;
+import org.springframework.scheduling.annotation.Async;
 
 import java.util.List;
 
@@ -13,4 +14,7 @@ public interface IInterimPayCertificateItemService extends BaseService<InterimPa
     void updateInterimPayCertificateItem(List<InterimPayCertificateItem> list4);
 
     InterimPayCertificateItem selectItem(String cts, Long id);
+
+    @Async
+    void sendJLSmg(Long taskId);
 }

+ 5 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInterimPayCertificateService.java

@@ -21,6 +21,8 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.meter.entity.InterimPayCertificate;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.meter.vo.InterimPayCertificateVO;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -51,4 +53,7 @@ public interface IInterimPayCertificateService extends BaseService<InterimPayCer
     List<Long> existCertificate(Long contractId);
 
     IPage<InterimPayCertificateVO> page2(InterimPayCertificate interimPayCertificate, Query query);
+
+    @Async
+    void taskMeterPdfInfo2(String taskId, String reportId, Integer type);
 }

+ 14 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InterimPayCertificateItemServiceImpl.java

@@ -3,17 +3,20 @@ package org.springblade.meter.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.meter.entity.InterimPayCertificateItem;
 import org.springblade.meter.mapper.InterimPayCertificateItemMapper;
 import org.springblade.meter.service.IInterimPayCertificateItemService;
 import org.springblade.meter.vo.MonthlyReportVo;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author yangyj
@@ -21,8 +24,10 @@ import java.util.List;
  * @description TODO
  */
 @Service
+@AllArgsConstructor
 public class InterimPayCertificateItemServiceImpl extends BaseServiceImpl<InterimPayCertificateItemMapper, InterimPayCertificateItem> implements IInterimPayCertificateItemService {
 
+    private final JdbcTemplate jdbcTemplate;
     @Override
     @Transactional
     public void addInterimPayCertificateItem(Long certificateId, List<MonthlyReportVo> values) {
@@ -65,4 +70,13 @@ public class InterimPayCertificateItemServiceImpl extends BaseServiceImpl<Interi
         InterimPayCertificateItem item = baseMapper.selectOne(wrapper);
         return item==null?new InterimPayCertificateItem():item;
     }
+
+    @Override
+    public void sendJLSmg(Long taskId) {
+        //发送短信
+        jdbcTemplate.queryForMap("select  * from u_task where id=" + taskId + " ");
+
+
+
+    }
 }

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

@@ -21,8 +21,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
+import net.logstash.logback.encoder.org.apache.commons.lang3.ObjectUtils;
+import org.springblade.business.entity.Task;
+import org.springblade.business.entity.TaskParallel;
+import org.springblade.common.constant.CommonConstant;
+import org.springblade.common.utils.CommonUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.oss.model.BladeFile;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.meter.controller.TaskController;
 import org.springblade.meter.entity.InterimPayCertificate;
 import org.springblade.meter.entity.InterimPayCertificateItem;
@@ -31,14 +38,24 @@ import org.springblade.meter.mapper.InterimPayCertificateMapper;
 import org.springblade.meter.service.IInterimPayCertificateItemService;
 import org.springblade.meter.service.IInterimPayCertificateService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.utils.FileUtils;
+import org.springblade.meter.utils.PdfAddimgUtil;
 import org.springblade.meter.vo.InterimPayCertificateVO;
+import org.springblade.resource.feign.NewIOSSClient;
+import org.springblade.system.cache.ParamCache;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestParam;
 
+import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -56,6 +73,8 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
 
     private final JdbcTemplate jdbcTemplate;
 
+    private final NewIOSSClient newIOSSClient;
+
 
     /**
      * 新增 中期支付证书
@@ -75,14 +94,14 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
     public void update2(InterimPayCertificate interimPayCertificate) {
         //获取支付证书
         InterimPayCertificate certificate = this.getById(interimPayCertificate.getId());
-        if (certificate.getIsLock() == 1){
+        if (certificate.getIsLock() == 1) {
             throw new ServiceException("修改失败,当前证书已锁定");
         }
-        if (certificate.getApproveStatus() != 0){
+        if (certificate.getApproveStatus() != 0) {
             throw new ServiceException("修改失败,当前证书已上报或已审批");
         }
         List<InterimPayCertificateItem> list = interimPayCertificate.getPayList();
-        if(list.size()>0){
+        if (list.size() > 0) {
             for (InterimPayCertificateItem item : list) {
                 this.interimPayCertificateItemService.saveOrUpdate(item);
             }
@@ -99,10 +118,10 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
             //获取支付证书
             InterimPayCertificate certificate = this.getById(aLong);
             //判断是否锁定
-            if (certificate.getIsLock() == 1){
+            if (certificate.getIsLock() == 1) {
                 throw new ServiceException("修改失败,当前证书已锁定");
             }
-            if (certificate.getApproveStatus() != 0){
+            if (certificate.getApproveStatus() != 0) {
                 throw new ServiceException("修改失败,当前证书已上报或已审批");
             }
             this.removeById(aLong);
@@ -116,14 +135,14 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
     @Override
     public void locking(Long id, Integer isLock) {
         Integer type;
-        if (isLock == 0){
+        if (isLock == 0) {
             type = 1;
-        }else {
+        } else {
             type = 0;
         }
         this.update(new LambdaUpdateWrapper<InterimPayCertificate>()
-                .eq(InterimPayCertificate::getId,id)
-                .set(InterimPayCertificate::getIsLock,type));
+                .eq(InterimPayCertificate::getId, id)
+                .set(InterimPayCertificate::getIsLock, type));
     }
 
     /**
@@ -133,10 +152,10 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
     public InterimPayCertificateVO detail(Long id) {
         InterimPayCertificateVO vo = baseMapper.getById(id);
         //设置支付项集合
-        List<InterimPayCertificateItem> items = this.interimPayCertificateItemService.list(Wrappers.<InterimPayCertificateItem>lambdaQuery().eq(InterimPayCertificateItem::getCertificateId,id).eq(InterimPayCertificateItem::getIsDeleted,0).orderByAsc(InterimPayCertificateItem::getSort));
-        if(vo.getMaterialPeriodIds()==null||vo.getMaterialPeriodIds().equals("")){
+        List<InterimPayCertificateItem> items = this.interimPayCertificateItemService.list(Wrappers.<InterimPayCertificateItem>lambdaQuery().eq(InterimPayCertificateItem::getCertificateId, id).eq(InterimPayCertificateItem::getIsDeleted, 0).orderByAsc(InterimPayCertificateItem::getSort));
+        if (vo.getMaterialPeriodIds() == null || vo.getMaterialPeriodIds().equals("")) {
             for (InterimPayCertificateItem item : items) {
-                if(item.getChapterSeq().equals("材料预付款")){
+                if (item.getChapterSeq().equals("材料预付款")) {
                     item.setCurrentPeriodPay("");
                     break;
                 }
@@ -147,7 +166,6 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
     }
 
 
-
     /**
      * 重新计算 中期支付证书
      */
@@ -156,10 +174,10 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
         //获取支付证书
         InterimPayCertificate certificate = this.getById(id);
         //判断是否锁定
-        if (certificate.getIsLock() == 1){
+        if (certificate.getIsLock() == 1) {
             throw new ServiceException("生成失败,当前证书已锁定");
         }
-        if (certificate.getApproveStatus() != 0){
+        if (certificate.getApproveStatus() != 0) {
             throw new ServiceException("生成失败,当前证书已上报或已审批");
         }
         //生成报表,计算之后生成金额设置进支付证书
@@ -176,20 +194,20 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
 
     @Override
     public List<Long> existCertificate(Long contractId) {
-        List<InterimPayCertificate> list=this.list(Wrappers.<InterimPayCertificate>lambdaQuery().select(InterimPayCertificate::getId,InterimPayCertificate::getContractPeriodId).eq(InterimPayCertificate::getContractId,contractId));
-        if(list.size()>0){
+        List<InterimPayCertificate> list = this.list(Wrappers.<InterimPayCertificate>lambdaQuery().select(InterimPayCertificate::getId, InterimPayCertificate::getContractPeriodId).eq(InterimPayCertificate::getContractId, contractId));
+        if (list.size() > 0) {
             return list.stream().map(InterimPayCertificate::getContractPeriodId).collect(Collectors.toList());
         }
-       return Collections.emptyList();
+        return Collections.emptyList();
     }
 
     @Override
     public IPage<InterimPayCertificateVO> page2(InterimPayCertificate interimPayCertificate, Query query) {
-        IPage<InterimPayCertificateVO> iPage = new Page<>(query.getCurrent(),query.getSize());
-        iPage = baseMapper.page2(iPage,interimPayCertificate);
-        for (InterimPayCertificateVO record : iPage.getRecords()) {
+        IPage<InterimPayCertificateVO> iPage = new Page<>(query.getCurrent(), query.getSize());
+        iPage = baseMapper.page2(iPage, interimPayCertificate);
+/*        for (InterimPayCertificateVO record : iPage.getRecords()) {
             if(record.getStatus()==1){
-                if(record.getPrePdfUrl()==null){
+                if(record.getPrePdfUrl().length()>=10){
                     record.setPrePdfUrl(record.getPrePdfUrl());
                     jdbcTemplate.update("UPDATE s_interim_pay_certificate SET pre_pdf_url = raw_url where id="+record.getId());
                 }else {
@@ -199,7 +217,106 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
                     }
                 }
             }
-        }
+        }*/
         return iPage;
     }
+
+
+    @Override
+    public void taskMeterPdfInfo2(@RequestParam String taskId, @RequestParam String reportId, @RequestParam Integer type) {
+        try {
+            Task task = null;
+           if(taskId!=null && taskId.length()>=6){
+               task = jdbcTemplate.query("SELECT * FROM u_task WHERE id = ? ", new Object[]{taskId}, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
+           }
+
+            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);
+            }
+
+            if (task == null) {
+                System.out.println("未找到任务相关信息");
+            }
+            if (task.getStatus() == 3) {
+                System.out.println("已废除无法查看报表");
+            }
+
+            String sql = "";
+            if (type == 0) {
+                sql = "select * from s_interim_pay_certificate where is_deleted=0 and contract_period_id = " + task.getFormDataId() + " ";
+            } else {
+                sql = "select * from s_material_start_statement where is_deleted=0 and meter_period_id = " + task.getFormDataId() + "";
+            }
+            Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(sql);
+            String pdfUrl = stringObjectMap.get("raw_url") + "";
+            if (pdfUrl.length() <= 10) {
+                System.out.println("电签报表生成中,等2分钟刷新查看");
+            } else {
+                List<String> pdfSignIds = PdfAddimgUtil.getPdfSignIds(pdfUrl);
+                if (pdfSignIds.size() > 0) {
+                    String ids = String.join(",", pdfSignIds);
+                    String sqlp = "SELECT * from u_task_parallel WHERE process_instance_id = '" + task.getProcessInstanceId() + "' and `status`=2 and is_deleted=0";
+                    List<TaskParallel> taskParallels = jdbcTemplate.query(sqlp, new BeanPropertyRowMapper<>(TaskParallel.class));
+                    if(taskParallels==null && taskParallels.size()==0){
+                        if (type == 0) {
+                            jdbcTemplate.update("update s_interim_pay_certificate set pre_pdf_url ='" + pdfUrl + "' where id=" + reportId);
+                        }else{
+                            jdbcTemplate.update("update s_material_start_statement set pre_pdf_url ='" + pdfUrl + "' where id=" + reportId);
+                        }
+                    }
+                    List<Map<String, Object>> maps = new ArrayList<>();
+                    for (TaskParallel parallel : taskParallels) {
+                        String sqlinfo = "SELECT * from ( SELECT DISTINCT a.id,a.pyzbx ,a.pyzby,a.project_id,(SELECT signature_file_url from m_sign_pfx_file where is_register=1 and certificate_user_id='" + parallel.getTaskUser() + "' and is_deleted=0  ) as signature_file_url,a.type from m_textdict_info a where  a.type =2 and a.id in (" + ids + ")  and sig_role_id in (SELECT DISTINCT c.role_id from m_project_assignment_user c  where c.contract_id=" + task.getContractId() + " and user_id=" + parallel.getTaskUser() + " and c.is_deleted=0 ) ) x where x.signature_file_url is not null ";
+                        List<Map<String, Object>> maps2 = jdbcTemplate.queryForList(sqlinfo);
+                        Map<String, List<Map<String, Object>>> peopleByAge = maps2.stream()
+                                .collect(Collectors.groupingBy(hada -> (Func.toStr(hada.get("id")))));
+
+                        for (String keyId : peopleByAge.keySet()) {
+                            int exId = 0;
+                            List<Map<String, Object>> keyList = peopleByAge.get(keyId);
+                            if (keyList != null && keyList.size() == 1) {
+                                maps.addAll(keyList);
+                                exId = 1;
+                            } else if (keyList != null && keyList.size() >= 2) {
+                                for (Map<String, Object> datax : keyList) {
+                                    if ((datax.get("project_id") + "").equals(task.getProjectId())) {
+                                        maps.add(datax);
+                                        exId = 1;
+                                    }
+                                }
+                            }
+                            if (exId == 0) {
+                                maps.add(keyList.get(0));
+                            }
+                        }
+                    }
+
+                    if (Func.isNotEmpty(maps) || maps.size() >= 1) {
+                        InputStream ossInputStream = CommonUtil.getOSSInputStream(pdfUrl);
+                        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);
+                        if (bladeFile != null && ObjectUtils.isNotEmpty(bladeFile.getLink())) {
+                            if (type == 0) {
+                                sql = "update s_interim_pay_certificate set pre_pdf_url ='" + bladeFile.getLink() + "' where is_deleted=0 and contract_period_id = " + task.getFormDataId() + " ";
+                            } else {
+                                sql = "update s_material_start_statement set pre_pdf_url ='" + bladeFile.getLink() + "'  where is_deleted=0 and meter_period_id = " + task.getFormDataId() + "";
+                            }
+                            jdbcTemplate.execute(sql);
+                        }
+                    }
+                } else {
+                    if (type == 0) {
+                        jdbcTemplate.update("update s_interim_pay_certificate set pre_pdf_url ='" + pdfUrl + "' where id=" + reportId);
+                    }else{
+                        jdbcTemplate.update("update s_material_start_statement set pre_pdf_url ='" + pdfUrl + "' where id=" + reportId);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        System.out.println("");
+    }
 }

+ 51 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/utils/MeMsgUtils.java

@@ -0,0 +1,51 @@
+package org.springblade.meter.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.http.Consts;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.message.BasicNameValuePair;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+public class MeMsgUtils {
+
+    public static boolean sendMsg(String phone) {
+        HttpClient httpClient = HttpClientBuilder.create().build();
+        String url = "http://183.247.216.148:7030/tz_server/sms/sendSmsContent";
+
+        HttpPost httpPost = new HttpPost(url);
+
+        List<NameValuePair> params = new ArrayList<NameValuePair>();
+        params.add(new BasicNameValuePair("phone", phone));
+        params.add(new BasicNameValuePair("content", "您好!本期计量流程已流转到您这里,请您及时审批(48小时),如遇问题请联系信息化总平台电话13816882389,谢谢!"));
+        httpPost.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));
+        try {
+            HttpResponse httpResponse = httpClient.execute(httpPost);
+            InputStream inputStream = httpResponse.getEntity().getContent();
+            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+            byte[] buffer = new byte[1024];
+            int index = 0;
+            while ((index = inputStream.read(buffer)) != -1) {
+                outputStream.write(buffer, 0, index);
+            }
+            JSONObject jsonObject = JSON.parseObject(outputStream.toString());
+            if(jsonObject.getInteger("status")==200){
+                return true;
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
+}

Some files were not shown because too many files changed in this diff