wzy 1 maand geleden
bovenliggende
commit
0041c2e819

+ 5 - 0
mjava-boyang/src/main/java/com/malk/boyang/controller/BoyangController.java

@@ -28,6 +28,11 @@ public class BoyangController {
     public McR sign(@RequestBody Map body) {
         return boyangService.eSignSubmit(body);
     }
+    @GetMapping("/retrySign")
+    public McR retrySign(String businessId) {
+        return boyangService.retrySign(businessId);
+    }
+
 
     @GetMapping("/getOrganization")
     public McR getOrganization(String name) {

+ 3 - 0
mjava-boyang/src/main/java/com/malk/boyang/service/BoyangService.java

@@ -14,4 +14,7 @@ public interface BoyangService {
     McR getOrganization(String name);
 
     void start(String processInstanceId,String signFlowId);
+
+    //根据审批编号重试发起e签宝签署
+    McR retrySign(String businessId);
 }

+ 33 - 0
mjava-boyang/src/main/java/com/malk/boyang/service/impl/BoyangServiceImpl.java

@@ -23,6 +23,9 @@ import org.springframework.stereotype.Service;
 import java.io.*;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 @Slf4j
@@ -516,6 +519,36 @@ public class BoyangServiceImpl implements BoyangService {
         }
     }
 
+    @Override
+    public McR retrySign(String businessId) {
+        // 前12位: 年月日时分
+        String datePart = businessId.substring(0, 12);
+        // 16-17位: 秒
+        String secondPart = businessId.substring(15, 17);
+
+        // 组合完整时间: 年月日时分秒
+        String dateTimeStr = datePart + secondPart;
+        LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr, DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+
+        // 转换为时间戳(毫秒)
+        long startTime = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
+        long endTime = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() + 1000;//应对审批编号与实际时间戳存在差异情况
+
+        Map instanceIds = ddClient_workflow.getInstanceIds(ddClient.getAccessToken(), "PROC-7DF36B3B-FBAD-4DF6-B8CD-723FFA8DBEC5", startTime, endTime, null);
+
+        List<String> list = UtilMap.getList(instanceIds, "list");
+
+        if (list.size() == 1){
+            String processInstanceId = list.get(0);
+            Map map = new HashMap();
+            map.put("processInstanceId",processInstanceId);
+
+            return eSignSubmit(map);
+        }else {
+            return McR.errorUnknown("未找到符合条件的数据");
+        }
+    }
+
     //下载钉钉OA审批单附件
     private void downloadDdFile(String processInstanceId,String fileId,String downloadPath){
         try {