Explorar o código

9.27门户接口修改

“lqy hai 8 meses
pai
achega
9df1405ce3
Modificáronse 19 ficheiros con 1870 adicións e 302 borrados
  1. 8 1
      mjava-ruisi/pom.xml
  2. 4 0
      mjava-ruisi/src/main/java/com/malk/ruisi/constant/QysConstant.java
  3. 113 0
      mjava-ruisi/src/main/java/com/malk/ruisi/controller/CosController.java
  4. 619 42
      mjava-ruisi/src/main/java/com/malk/ruisi/controller/QysHuiDaoController.java
  5. 59 0
      mjava-ruisi/src/main/java/com/malk/ruisi/controller/RSScheduleTask.java
  6. 54 6
      mjava-ruisi/src/main/java/com/malk/ruisi/controller/RsQysController.java
  7. 101 17
      mjava-ruisi/src/main/java/com/malk/ruisi/controller/ScheduleTask.java
  8. 15 0
      mjava-ruisi/src/main/java/com/malk/ruisi/server/YDParam_T.java
  9. 2 0
      mjava-ruisi/src/main/java/com/malk/ruisi/service/QysApiService.java
  10. 8 0
      mjava-ruisi/src/main/java/com/malk/ruisi/service/QysService.java
  11. 24 0
      mjava-ruisi/src/main/java/com/malk/ruisi/service/RSService.java
  12. 8 0
      mjava-ruisi/src/main/java/com/malk/ruisi/service/RsQysService.java
  13. 12 0
      mjava-ruisi/src/main/java/com/malk/ruisi/service/dingshiqi.java
  14. 12 0
      mjava-ruisi/src/main/java/com/malk/ruisi/service/impl/QysApiServiceImpl.java
  15. 33 0
      mjava-ruisi/src/main/java/com/malk/ruisi/service/impl/QysServiceImpl.java
  16. 175 0
      mjava-ruisi/src/main/java/com/malk/ruisi/service/impl/RSImplService.java
  17. 306 65
      mjava-ruisi/src/main/java/com/malk/ruisi/service/impl/RsQysServiceImpl.java
  18. 308 169
      mjava-ruisi/src/main/java/com/malk/ruisi/service/impl/dingshiqiImpl.java
  19. 9 2
      mjava-ruisi/src/main/resources/application-dev.yml

+ 8 - 1
mjava-ruisi/pom.xml

@@ -23,6 +23,13 @@
             <version>2.8.9</version> <!-- 检查最新版本 -->
         </dependency>
 
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.32</version>
+            <scope>runtime</scope>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -40,7 +47,7 @@
         <dependency>
             <groupId>com.malk</groupId>
             <artifactId>base</artifactId>
-            <version>1.0-SNAPSHOT</version>
+            <version>1.1-SNAPSHOT</version>
         </dependency>
     </dependencies>
 

+ 4 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/constant/QysConstant.java

@@ -22,12 +22,16 @@ public class QysConstant {
 
     public static String QYS_API_DETAIL="/seal/detail";
 
+    public static String QYS_API_AUDIA="/contract/audit";
+
     public static String QYS_API_PRESIGNURL="/contract/presignurl";
 
     public static String QYS_API_SIGNURL="/contract/signurl";
 
     public static String QYS_API_CONTRACT_DETAIL="/contract/detail";
 
+    public static String QYS_API_CONTRACT_VIEWURL="/contract/viewurl";
+
     public static String QYS_API_SEND="/contract/send";
 
     public static String QYS_API_CATEGORIES="/contract/categories";

+ 113 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/controller/CosController.java

@@ -0,0 +1,113 @@
+package com.malk.ruisi.controller;
+
+/**
+ * 错误抛出与拦截详见 CatchException
+ */
+
+import com.malk.ruisi.service.RSService;
+import com.malk.server.common.McException;
+import com.malk.server.common.McR;
+import com.malk.utils.UtilServlet;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@RestController
+@RequestMapping
+public class CosController {
+
+    @Autowired
+    private RSService rsService;
+
+    /**
+     * 创建投资人用户
+     */
+    @PostMapping("user/sync")
+    McR syncUser() {
+        
+        log.info("syncUser");
+        rsService.syncDingTalk_exclusive();
+        return McR.success();
+    }
+
+    /**
+     * 重置密码流程
+     */
+    @PostMapping("reset")
+    McR resetPwd(HttpServletRequest request) {
+
+        Map data = UtilServlet.getParamMap(request);
+        log.info("reset, {}", data);
+
+        McException.assertParamException_Null(data, "userId", "password");
+        rsService.resetPwd(data);
+        return McR.success();
+    }
+
+    @PostMapping("test")
+    McR test() {
+
+        return McR.success();
+    }
+
+    /**
+     * 资讯卡片
+     * 1. 接口格式为 formData, 宜搭服务注册一致
+     * 2. 工作台页面不支持配置参数, 需要通过接口区分
+     */
+    @PostMapping("portal/cw")
+    List<Map> portal(HttpServletRequest request) {
+
+        Map data = UtilServlet.getParamMap(request);
+        log.info("工作台数据, {}", data);
+        return rsService.getPortalList("财务专区");
+    }
+
+    @PostMapping("portal/gs")
+    List<Map> portal1(HttpServletRequest request) {
+
+        Map data = UtilServlet.getParamMap(request);
+        log.info("工作台数据, {}", data);
+        return rsService.getPortalList("公司头条");
+    }
+
+    @PostMapping("portal/qy")
+    List<Map> portal2(HttpServletRequest request) {
+
+        Map data = UtilServlet.getParamMap(request);
+        log.info("工作台数据, {}", data);
+        return rsService.getPortalList("企业文化");
+    }
+
+    @PostMapping("portal/yg")
+    List<Map> portal3(HttpServletRequest request) {
+
+        Map data = UtilServlet.getParamMap(request);
+        log.info("工作台数据, {}", data);
+        return rsService.getPortalList("员工自助");
+    }
+
+    @PostMapping("portal/gz")
+    List<Map> portal4(HttpServletRequest request) {
+
+        Map data = UtilServlet.getParamMap(request);
+        log.info("工作台数据, {}", data);
+        return rsService.getPortalList("规章制度");
+    }
+    /// 流程分享权限 1. 发起人可操作权限 2. 配置弹出框在可编辑权限
+    @PostMapping("share/record")
+    McR shareRecord(@RequestParam String processInstanceId, @RequestBody Map data) {
+
+        log.info("流程分享权限, {}, {}", processInstanceId, data);
+        rsService.shareRecord(processInstanceId, data);
+
+
+
+        return McR.success();
+    }
+}

+ 619 - 42
mjava-ruisi/src/main/java/com/malk/ruisi/controller/QysHuiDaoController.java

@@ -1,13 +1,11 @@
 package com.malk.ruisi.controller;
 
 
-import cn.hutool.http.HttpUtil;
-import cn.hutool.json.ObjectMapper;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.fasterxml.jackson.databind.JsonNode;
+import com.malk.ruisi.service.QysService;
 import com.malk.ruisi.service.RsQysService;
-import com.malk.ruisi.service.dingshiqi;
 import com.malk.ruisi.service.impl.dingshiqiImpl;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
@@ -15,11 +13,12 @@ import com.malk.server.common.McException;
 import com.malk.server.common.McR;
 import com.malk.server.dingtalk.DDConf;
 import com.malk.service.aliwork.YDClient;
+import com.malk.service.aliwork.YDService;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.utils.UtilHttp;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.xmlbeans.impl.jam.mutable.MClass;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.UrlResource;
@@ -32,6 +31,10 @@ import java.io.IOException;
 import java.net.MalformedURLException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.*;
 
 @RestController
@@ -81,39 +84,272 @@ public class QysHuiDaoController {
         }
         return McR.success(r);
     }
+    @Autowired
+    private YDService ydService;
+//更新表单字段
+    @GetMapping("/test20")
+    McR test12() {
+        ydClient.operateData(YDParam.builder()
+                .formInstanceId("9f32c151-956d-4f4a-a175-c31cbcc8c905")
+                .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("departmentSelectField_lys0k6qb",Arrays.asList("154981944"))))
+                        .useLatestVersion(true)
+                        .build(), YDConf.FORM_OPERATION.update);
+        return McR.success();
+    }
+    @GetMapping("/test21")
+    McR test21() {
+        String formInstanceId = "644298b7-6503-4576-a9f5-bb520bbe752d";//请假表单实例ID
+        String userId = "1006793";
+        Map formData = (Map) ydClient.queryData(YDParam.builder().formInstId(formInstanceId)
+                .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+        List  employeeField_lts1mg30_id = (List) formData.get("employeeField_lts1mg30_id");
+        List  departmentSelectField_lts1mg2z_id = (List) formData.get("departmentSelectField_lts1mg2z_id");
+//        List  departmentSelectField_lys0k6qb_id = (List) formData.get("departmentSelectField_lys0k6qb_id");
+//
+        System.out.println("=="+employeeField_lts1mg30_id);
+        formData.put("employeeField_lts1mg30", employeeField_lts1mg30_id);
+        formData.put("departmentSelectField_lts1mg2z", departmentSelectField_lts1mg2z_id);
+//        formData.put("departmentSelectField_lys0k6qb", departmentSelectField_lys0k6qb_id);
+
+        System.out.println(formData);
+        ydClient.operateData(YDParam.builder()
+                .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+                .formUuid("FORM-A02F7EA3AD6548E59B8E1692AD729C77C5LD")
+                .userId(userId)
+                .formDataJson(JSON.toJSONString(formData))
+                .build(), YDConf.FORM_OPERATION.start).toString();////
+        return McR.success(formData);
+    }
+    @GetMapping("/test22")
+    McR test22() {
+        String formInstanceId = "d738e145-e0ca-4b1e-87c8-d278330041b7";
+        String userId = "1007210";
+        Map formData = (Map) ydClient.queryData(YDParam.builder().formInstId(formInstanceId)
+                .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+        List  employeeField_lts8k71n_id = (List) formData.get("employeeField_lts8k71n_id");
+        List  departmentSelectField_lts8k71m_id = (List) formData.get("departmentSelectField_lts8k71m_id");
+        List  departmentSelectField_lx9uj3ds_id = (List) formData.get("departmentSelectField_lx9uj3ds_id");
+//           List  employeeField_lwt3bde4_id = (List) formData.get("employeeField_lwt3bde4_id");
+//        System.out.println("=="+employeeField_lts1mg30_id);
+        formData.put("employeeField_lts8k71n", employeeField_lts8k71n_id);
+        formData.put("departmentSelectField_lts8k71m", departmentSelectField_lts8k71m_id);
+        formData.put("departmentSelectField_lx9uj3ds", departmentSelectField_lx9uj3ds_id);
+//        formData.put("employeeField_lwt3bde4", employeeField_lwt3bde4_id);
+        System.out.println(formData);
+        ydClient.operateData(YDParam.builder()
+                .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+                .formUuid("FORM-2C6A3F5B7A194F2390A5BA9677055295XVHL")
+                .userId(userId)
+                .formDataJson(JSON.toJSONString(formData))
+                .build(), YDConf.FORM_OPERATION.start).toString();////
+        return McR.success(formData);
+    }
+    @GetMapping("/test23")
+    McR test23() {
+        String formInstanceId = "1c934e55-cd5d-42e7-94b3-2a90cdb8c827";
+        String userId = "1007443";
+        Map formData = (Map) ydClient.queryData(YDParam.builder().formInstId(formInstanceId)
+                .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+        List  employeeField_lu7zrcj3_id = (List) formData.get("employeeField_lu7zrcj3_id");
+//        List  departmentSelectField_lts1mg2z_id = (List) formData.get("departmentSelectField_lts1mg2z_id");
+        List  departmentSelectField_lu7zrcj4_id = (List) formData.get("departmentSelectField_lu7zrcj4_id");
+//
+//        System.out.println("=="+employeeField_lts1mg30_id);
+        formData.put("employeeField_lu7zrcj3", employeeField_lu7zrcj3_id);
+        formData.put("departmentSelectField_lu7zrcj4", departmentSelectField_lu7zrcj4_id);
+//        formData.put("departmentSelectField_lys0k6qb", departmentSelectField_lys0k6qb_id);
+
+        System.out.println(formData);
+        ydClient.operateData(YDParam.builder()
+                .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+                .formUuid("FORM-0AD770FAD54A47CA938A9D338C6FBB1BZ7AH")
+                .userId(userId)
+                .formDataJson(JSON.toJSONString(formData))
+                .build(), YDConf.FORM_OPERATION.start).toString();////
+        return McR.success(formData);
+    }
+    //刷新页面为最新版本
+    @GetMapping("/test6")
+    public McR test6() throws Exception {
+        List<Map> datalist = ydService.queryFormData_all(YDParam.builder()
+                        .formUuid("FORM-2C6A3F5B7A194F2390A5BA9677055295XVHL")
+                        .build()
+                );
+        for (Map map : datalist) {
+            ydClient.operateData(YDParam.builder()
+                    .useLatestVersion(true)
+                    .formInstanceId(UtilMap.getString(map, "formInstanceId"))
+                    .updateFormDataJson(JSONObject.toJSONString(new HashMap<>()))
+                    .build(), YDConf.FORM_OPERATION.update);
+        }
+        return McR.success();
+    }
+    @GetMapping("/test5" )
+    public String test5() throws Exception {
+        dingshiqiImpl dingshiqi = new dingshiqiImpl();
+        List<Map> datalist = (List<Map>) ydClient.queryData(YDParam.builder()
+                .formUuid("FORM-F7B0E685C56E41FC939A581F8B7C2665PXPV")
+                .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
+
+        for (Map map : datalist) {
+            Map formData = (Map) map.get("formData");
+            boolean flag = false;
+            String instanceId = String.valueOf(formData.get("textField_lzns5l3k"));
+
+            Map param2 = new HashMap();
+            param2.put("x-acs-dingtalk-access-token", dingshiqi.getAccessToken_PJSS());
+            Map body3 = new HashMap();
+            body3.put("appType", "APP_VCTRP6227CC8368NDOID");
+            body3.put("systemToken", "5H9662C1X8XJLFFCE841M5VBEBQ73DM5IBPULPI3");
+            body3.put("processInstanceId", instanceId);
+            body3.put("userId", YDConf.PUB_ACCOUNT);
+            String taskId = "";
+            String s = UtilHttp.doGet("https://api.dingtalk.com/v1.0/yida/processes/operationRecords", param2, (Map<String, Object>) body3);
+            JSONObject obj = JSONObject.parseObject(s);
+            JSONArray arr = obj.getJSONArray("result");
+            for (int i = 0; i < arr.size(); i++) {
+                JSONObject json = arr.getJSONObject(i);
+                log.info("json:{},{}", json.getString("operatorUserId"),json.getString("type"));
+
+
+                if (json.getString("operatorUserId").equals("13810479803") && json.getString("type").equals("TODO")) {
+                    taskId = json.getString("taskId");
+                    taskExecute(String.valueOf(formData.get("textField_lzns5l3k")),taskId);
+                    flag = true;
+                    break;
+                }
+            }
+            if (flag) {
+                ydClient.operateData(YDParam.builder()
+                        .formInstanceId(UtilMap.getString(map, "formInstanceId"))
+                        .build(), YDConf.FORM_OPERATION.delete);
+            }
+        }
+        return "success";
+    }
+    private Map<String, String> getFormUuid(String type) {
+        Map<String, String> map = UtilMap.empty();
+        switch (type) {
+            case "HT01"://合同
+                map.put("type", "FORM-55D56A69CCCE4043A01660C8910E33BAQ4N0");
+                map.put("sn", "serialNumberField_ltsbweh2");
+                map.put("contractId", "textField_lwah8x72");
+                break;
+            case "CG11"://框架采购
+                map.put("type", "FORM-82E566F8576E44D3AB4B34033A27E76FEB75");
+                map.put("sn", "serialNumberField_ltsbweh2");
+                map.put("contractId", "textField_lwah8x72");
+                break;
+            case "HT02"://框架
+                map.put("type", "FORM-5DB656AF0F0E4EFA85A4739D55C23ED85BXO");
+                map.put("sn", "serialNumberField_lvz8coae");
+                map.put("contractId", "textField_lwg205ug");
+                break;
+            case "HT03"://租赁
+                map.put("type", "FORM-FCDDD18FD63E49B2A4C652FBDB1874F6DPHW");
+                map.put("sn", "serialNumberField_ltwcj54l");
+                map.put("contractId", "textField_lwg1wbix");
+                break;
+            case "XZ04"://其他
+                map.put("type", "FORM-B27C1AE7298648F29E836B5FDF469DBDPFCK");
+                map.put("sn", "serialNumberField_ltwktal5");
+                break;
+            case "HTSG"://合同/申购
+                map.put("type", "FORM-88F968E75CC340EB91B1AC692F4184DC9I9W");
+                map.put("sn", "serialNumberField_lu7ycpuc");
+                map.put("contractId", "textField_lwg219kl");
+                break;
+            case "HR09"://hr用印
+                map.put("type", "FORM-54972289A0B7416287A9BA44DA6CCDC50QUC");
+                map.put("sn", "serialNumberField_lu9euh7o");
+                break;
+            case "HR18"://新签劳动合同/协议
+                map.put("type", "FORM-0D501EF1688247DC932E7784298BD46BRYHC");
+                map.put("sn", "serialNumberField_luauhgb5");
+                map.put("contractId", "textField_lwg241g6");
+                break;
+            case "XZ05"://发文审批
+                map.put("type", "FORM-3E04D5456B2341CCBA62C955B791CF45IAH1");
+                map.put("sn", "serialNumberField_ltwmutno");
+                break;
+            case "XZ08"://印章授权
+                map.put("type", "FORM-87BD065161F84560B999FE94713255E20E6E");
+                map.put("sn", "serialNumberField_ltwp3e44");
+                break;
+            case "XZQYLC"://加盟签约
+                map.put("type", "FORM-53A0FB8715FB4378B0708794DFAF7089SV8P");
+                map.put("sn", "serialNumberField_ltsaig24");
+                break;
+            case "HR02"://合同续签
+                map.put("type", "FORM-FD73905FB9C24E3A99244F901D9C98AFH4E6");
+                map.put("sn", "serialNumberField_lu991xi3");
+                break;
+        }
+        return map;
+    }
     @GetMapping("/test1" )
     public String test1() throws Exception {
 //        List<Map> list = (List<Map>) ydClient.queryData(YDParam.builder().formUuid("FORM-5DB656AF0F0E4EFA85A4739D55C23ED85BXO")
 //                .searchFieldJson(JSONObject.toJSONString(UtilMap.map("serialNumberField_lvz8coae", "HT02-KJLHEYY-202407240029")))
 //                .build(), YDConf.FORM_QUERY.retrieve_list).getData();
-        Map data = (Map) ydClient.queryData(YDParam.builder().formInstId("6a1ca03a-1d9c-4906-a328-881741543db8")
+//        String type = "FORM-88F968E75CC340EB91B1AC692F4184DC9I9W";
+        String sn = "HTSG-202408120010";
+        String[] sns = sn.split("-");
+        dingshiqiImpl dingshiqi = new dingshiqiImpl();
+        Map<String, String> formUuid = getFormUuid(sns[0]);
+        List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder().formUuid(formUuid.get("type")).searchCondition(
+                JSONObject.toJSONString(UtilMap.map(formUuid.get("sn"), sn))
+        ).build(), YDConf.FORM_QUERY.retrieve_list).getData();
+        Map map = list1.get(0);
+        String instanceId = (String) map.get("formInstanceId");
+        Map data = (Map) ydClient.queryData(YDParam.builder().formInstId(instanceId)
                 .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
                 .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
-        System.out.println("qaqqaq------------"+data);
-        String json = data.get("associationFormField_lvz8coby"+"_id").toString();
-        System.out.println("zzzz==========="+json);
-        String s = StringEscapeUtils.unescapeJava(json.substring(1, json.length() - 1));
-        List<Map> list1 = (List<Map>) JSONArray.parse(s);
-        for (Map map2 : list1) {
-            JSONObject auths = new JSONObject();
-            String subTitle = (String) map2.get("instanceId");
-            Map data1 = (Map) ydClient.queryData(YDParam.builder().formInstId(subTitle)
-                    .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
-                    .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
-            System.out.println("niu==================="+data1);
-            String aa = (String) data1.get("textField_lwywohh0");
-            String aa1 = (String) data1.get("textField_lw6aecve");
-//            String aa2 = (String) data1.get("employeeField_lwr509pq_id");
-            ArrayList<Object> objects = new ArrayList<>();
-            Map hashMap = new HashMap();
-            hashMap.put("mobile",aa);
-            objects.add(hashMap);
-            auths.put("sealName", aa1);//印章名称
-            auths.put("count", 3);//授权数量
-            auths.put("users", objects);
-            System.out.println("qaq"+auths);
+        log.info("data:{}", data);
+        log.info("list1:{}", list1);
+        String categoryName = data.get(getCust(formUuid.get("type"), "categoryName")).toString();
+//        String categoryName = list1.get("textField_lwa2350q");
+        log.info("categoryName:{}", categoryName);
+//        if(type.equals("FORM-B27C1AE7298648F29E836B5FDF469DBDPFCK")){
+//            if(categoryName.equals("物理用印外带场景") || categoryName.equals("物理用印公司用印场景")){
+//                String jsonString = data.get(getCust(type, "fujian1")).toString();
+//            }else {
+//                String jsonString = data.get(getCust(type, "fujian")).toString();
+//            }
+//        }else {
+//            String jsonString = data.get(getCust(type, "fujian")).toString();
+//        }
+//        Map data = (Map) ydClient.queryData(YDParam.builder().formInstId("6a1ca03a-1d9c-4906-a328-881741543db8")
+//                .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+//                .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+//        System.out.println("qaqqaq------------"+data);
+//        String json = data.get("associationFormField_lvz8coby"+"_id").toString();
+//        System.out.println("zzzz==========="+json);
+//        String s = StringEscapeUtils.unescapeJava(json.substring(1, json.length() - 1));
+//        List<Map> list1 = (List<Map>) JSONArray.parse(s);
+//        for (Map map2 : list1) {
+//            JSONObject auths = new JSONObject();
+//            String subTitle = (String) map2.get("instanceId");
+//            Map data1 = (Map) ydClient.queryData(YDParam.builder().formInstId(subTitle)
+//                    .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+//                    .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+//            System.out.println("niu==================="+data1);
+//            String aa = (String) data1.get("textField_lwywohh0");
+//            String aa1 = (String) data1.get("textField_lw6aecve");
+////            String aa2 = (String) data1.get("employeeField_lwr509pq_id");
+//            ArrayList<Object> objects = new ArrayList<>();
+//            Map hashMap = new HashMap();
+//            hashMap.put("mobile",aa);
+//            objects.add(hashMap);
+//            auths.put("sealName", aa1);//印章名称
+//            auths.put("count", 3);//授权数量
+//            auths.put("users", objects);
+//            System.out.println("qaq"+auths);
 //            System.out.println("qqqq"+subTitle);
-        }
+//        }
 //        System.out.println("sssss======"+list1);
 //        log.info("list:{}", list);
 //        Map map = list.get(0);
@@ -141,18 +377,20 @@ return "success";
 //        String sn = param.get("sn");
 //        String[] sns = sn.split("-");
 //        Map<String, String> formUuid = getFormUuid(sns[0]);
-        List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder().formUuid("FORM-5DB656AF0F0E4EFA85A4739D55C23ED85BXO")
-                .searchFieldJson(JSONObject.toJSONString(UtilMap.map("serialNumberField_lvz8coae", "HT02-KJLHEYY-202408090037")))
-                .build(), YDConf.FORM_QUERY.retrieve_list).getData();
-        Map map = list1.get(0);
-        String instanceId = (String) map.get("formInstanceId");
+
+//        List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder().formUuid("FORM-0D501EF1688247DC932E7784298BD46BRYHC")
+//                .searchFieldJson(JSONObject.toJSONString(UtilMap.map("serialNumberField_luauhgb5", "HR18-XQLDHT/XYLC-202408090020")))
+//                .build(), YDConf.FORM_QUERY.retrieve_list).getData();
+//        Map map = list1.get(0);
+//        String instanceId = (String) map.get("formInstanceId");
+        String instanceId = "68b97e35-4707-4cd5-bff8-c5118e2db4ce";
         Map param2 = new HashMap();
         param2.put("x-acs-dingtalk-access-token", dingshiqi.getAccessToken_PJSS());
         Map body3 = new HashMap();
         body3.put("appType","APP_VCTRP6227CC8368NDOID");
         body3.put("systemToken","5H9662C1X8XJLFFCE841M5VBEBQ73DM5IBPULPI3");
         body3.put("processInstanceId", instanceId);
-        body3.put("userId","13810479803");
+        body3.put("userId","15099924886");
         boolean flag=true;
         do {
             String s = UtilHttp.doGet("https://api.dingtalk.com/v1.0/yida/processes/operationRecords", param2, (Map<String, Object>) body3);
@@ -163,7 +401,7 @@ return "success";
                 flag=false;
 //                if(json.getString("operatorUserId").equals("13810479803")&&json.getString("type").equals("TODO")){
                     try {
-                        taskExecute("0f3433c2-f9db-40ab-929b-3e8119d66c84",json.getString("taskId"));
+                        taskExecute(instanceId,json.getString("taskId"));
                     }catch (McException e){
                         log.error("taskExecute error:{}",e.getMessage());
                     }
@@ -176,13 +414,48 @@ return "success";
         }while (flag);
         return "success";
     }
-//    @GetMapping("/test" )
-//    public String test() throws Exception {
+    @GetMapping("/test10" )
+    public List<Map> test() throws Exception {
 //        dingshiqiImpl dingshiqi = new dingshiqiImpl();
 //        List<Map> list = (List<Map>) ydClient.queryData(YDParam.builder().formUuid("FORM-5DB656AF0F0E4EFA85A4739D55C23ED85BXO")
 //                .searchFieldJson(JSONObject.toJSONString(UtilMap.map("serialNumberField_lvz8coae", "HT02-KJLHEYY-202408090036")))
 //                .build(), YDConf.FORM_QUERY.retrieve_list).getData();
 //        log.info("list:{}", list);
+        List<Map> LegaltList = new ArrayList<>();
+        String sql = "select  *  from  V_SEAL_COM_USER where  miaosu ='电子' order by gszt";
+        String jdbcUrl = "jdbc:mysql://10.9.33.236/qiyuesuodb?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC";
+        String userName = "root";
+        String password = "hpZbPf6YnVr7";
+        try{
+            Class.forName("com.mysql.cj.jdbc.Driver");
+            Connection conn = DriverManager.getConnection(jdbcUrl, userName, password);
+            Statement statement = conn.createStatement();
+            ResultSet resultSet = statement.executeQuery(sql);
+            int i=0;
+            while (resultSet.next()){
+                i++;
+                System.out.println(i+"-"+resultSet.getFetchSize());
+                System.out.println(resultSet.getString("yzsysmz"));//看进度用
+                System.out.println(resultSet.getString("yzsyzid"));//名称
+                System.out.println(resultSet.getString("gszt"));//名称
+                System.out.println(resultSet.getString("id"));//名称
+                String yzsysmz = resultSet.getString("yzsysmz");//编号
+                String yzsyzid = resultSet.getString("yzsyzid");//名称
+                String gszt = resultSet.getString("gszt");//名称
+                String id = resultSet.getString("id");//名称
+                HashMap<String, Object> bankmap = new HashMap<>();
+                bankmap.put("yzsysmz",yzsysmz);
+                bankmap.put("yzsyzid",yzsyzid);
+                bankmap.put("gszt",gszt);
+                bankmap.put("id",id);
+                LegaltList.add(bankmap);
+            }
+            resultSet.close();
+            statement.close();
+            conn.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
 //        Map map = list.get(0);
 //        String instanceId = (String) map.get("formInstanceId");
 //        Map formData = (Map) map.get("formData");
@@ -223,8 +496,68 @@ return "success";
 //                }
 //            }
 //        }while (flag);
-//        return "success";
+        return LegaltList;
+    }
+    @Autowired
+    private QysService qysService1;
+//@GetMapping("/test12" )
+//public String test12() throws Exception {
+//    qysService1.download1("contractId");
+//    List<String> unzippedFiles = new ArrayList<>();
+//    String zipFilePath = BDURL + sn + ".zip";
+//    String destDirectory = PDFBDURL + sn;
+//    try {
+//        File destDir = new File(destDirectory);
+//        if (!destDir.exists()) {
+//            destDir.mkdir();
+//        }
+//        byte[] buffer = new byte[1024];
+//        ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
+//        ZipEntry entry = zipIn.getNextEntry();
+//        while (entry != null) {
+//            String filePath = destDirectory + File.separator + entry.getName();
+//            if (!entry.isDirectory()) {
+//                new File(filePath).getParentFile().mkdirs();
+//                FileOutputStream fos = new FileOutputStream(filePath);
+//                int len;
+//                while ((len = zipIn.read(buffer)) > 0) {
+//                    fos.write(buffer, 0, len);
+//                }
+//                fos.close();
+//                unzippedFiles.add(filePath);
+//            }
+//            zipIn.closeEntry();
+//            entry = zipIn.getNextEntry();
+//        }
+//        zipIn.close();
+//        System.out.println("ZIP 文件解压完成。");
+//    } catch (Exception e) {
+//        System.out.println("发生异常: " + e.getMessage());
+//        e.printStackTrace();
 //    }
+//    for (String unzippedFile : unzippedFiles) {
+//        Map map = new HashMap();
+//        String fileName = FileUtil.getName(unzippedFile);
+//        map.put("downloadUrl", URL + sn + "/" + fileName);
+//        map.put("name", fileName);
+//        map.put("previewUrl", map.get("downloadUrl"));
+//        map.put("url", map.get("downloadUrl"));
+//        map.put("ext", FileUtil.extName(unzippedFile));
+//        list.add(map);
+//    }
+//    log.info("list:{}", list);
+//
+//}
+    @GetMapping("/test11" )
+    public String test11() throws Exception {
+        Map data = (Map) ydClient.queryData(YDParam.builder().formInstId("4b3fdbdf-3aef-4fe8-9eef-d4966b61e8d4")
+                .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+                .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+        log.info("data:{}", data);
+        String sfbh = data.get("selectField_lu9euh7u").toString();
+        System.out.println("aaaaaaaaa"+sfbh);
+        return "success";
+    }
     private void taskExecute(String instanceId,String taskId){
         Map param3 = new HashMap();
         param3.put("x-acs-dingtalk-access-token",new dingshiqiImpl().getAccessToken_PJSS());
@@ -235,7 +568,7 @@ return "success";
         body4.put("remark","同意");
         body4.put("taskId",taskId);
         body4.put("processInstanceId", instanceId);
-        body4.put("userId","13810479803");
+        body4.put("userId","15099924886");
         String s1 = UtilHttp.doPost("https://api.dingtalk.com/v1.0/yida/tasks/execute", param3,null, (Map<String, Object>) body4);
         System.out.println("result"+s1);
     }
@@ -246,7 +579,7 @@ return "success";
      */
     @PostMapping("/callback")
     public String  callback(@RequestParam Map<String, String> param) throws Exception {
-        log.info("callback:{}", param);
+        log.info("callback:{}", JSON.toJSONString(param));
 
         //1.content解析为json字符   并获得contractId
         //2.根据contractId 获取附件到本地获得一个本地地址  接口:/contract/download zip保存到本地   并解压zip
@@ -286,6 +619,250 @@ return "success";
             return ResponseEntity.notFound().build();
         }
     }
+    private String getCust(String type, String key) throws Exception {
+        Map<String, String> map = UtilMap.empty();
+        if (type.equals("FORM-55D56A69CCCE4043A01660C8910E33BAQ4N0")) {
+            // 合同用印 组件编号
+            map.put("subject", "textField_ltsbwegw");//合同名称
+            map.put("sn", "serialNumberField_ltsbweh2");//合同编号
+            map.put("tenantName", "textField_lvz1kozf");//公司名称
+            map.put("tenantName1", "textField_lznvplmm");//印章公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("glbd", "associationFormField_lu0u6npd");//物理印章关联表单
+            map.put("categoryId", "textField_lvm5xmqe");//业务分类Id
+            map.put("contractId", "textField_lwah8x72");//合同Id
+            map.put("categoryName", "textField_lvz1kozg");//业务分类名称
+            map.put("fujian", "attachmentField_ltsbweir");//附件
+            map.put("creatorName", "employeeField_ltsbwefl");//创建人姓名
+            map.put("applyerNumber", "textField_lwebkb16");//创建人员工编号
+            map.put("sealName", "textField_lvw4umfr");//授权印章名称
+            map.put("count", "numberField_ltwa0vj6");//授权次数
+            map.put("mobile", "textField_lwzqvg93");//授权人手机号
+            map.put("tenantNameP", "textField_ltwa0vke");//对方个人签署人姓名
+            map.put("contactP", "textField_ltwa0vkf");//对方个人签署人联系电话
+            map.put("tenantNameA", "textField_ltwa0vk0");//对方公司名称
+            map.put("receiverNameA", "textField_ltwa0vk1");//对方公司签署人名称
+            map.put("contactA", "textField_ltwa0vk2");//对方公司签署人联系电话
+        } else if (type.equals("FORM-5DB656AF0F0E4EFA85A4739D55C23ED85BXO")) {
+            // 框架类用印
+            map.put("subject", "textField_lvz8coad");//合同名称
+            map.put("sn", "serialNumberField_lvz8coae");//合同编号
+            map.put("tenantName", "textField_lvza5uwu");//公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("tenantName1", "textField_lznvplmm");//印章公司名称
+            map.put("glbd", "associationFormField_lvz8coby");//物理印章关联表单
+            map.put("categoryId", "textField_lvz8cobe");//业务分类Id
+            map.put("contractId", "textField_lwg205ug");//合同Id
+            map.put("categoryName", "textField_lvz8cobd");//业务分类名称
+            map.put("fujian", "attachmentField_lvz8cocl");//附件
+            map.put("creatorName", "employeeField_lvz8co98");//创建人姓名
+            map.put("applyerNumber", "textField_lweccz0q");//创建人员工编号
+            map.put("sealName", "textField_lwelg27e");//授权印章名称
+            map.put("mobile", "textField_lwzqvg93");//授权人手机号
+            map.put("count", "numberField_lvz8cobz");//授权次数
+            map.put("tenantNameP", "textField_lvz8cocg");//对方个人签署人姓名
+            map.put("contactP", "textField_lvz8coce");//对方个人签署人联系电话
+            map.put("tenantNameA", "textField_lvz8coc5");//对方公司名称
+            map.put("receiverNameA", "textField_lvz8coc6");//对方公司签署人名称
+            map.put("contactA", "textField_lvz8coc7");//对方公司签署人联系电话
+
+        } else if (type.equals("FORM-B27C1AE7298648F29E836B5FDF469DBDPFCK")) {
+            // 其他用印
+            map.put("subject", "textField_ltwktal4");//合同名称
+            map.put("sn", "serialNumberField_ltwktal5");//合同编号
+            map.put("tenantName", "textField_lvz45lif");//公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("tenantName1", "textField_lznvplmm");//印章公司名称
+            map.put("categoryId", "textField_lvz45lii");//业务分类Id
+            map.put("glbd", "associationFormField_lu0w0l7x");//物理印章关联表单
+            map.put("contractId", "textField_lwg1z6hk");//合同Id
+            map.put("applyerNumber", "textField_lwelap55");//创建人员工编号
+            map.put("sealName", "textField_lx1gzqai");//授权印章名称
+            map.put("mobile", "textField_lwzqvg93");//授权人手机号
+            map.put("count", "numberField_ltwktalp");//授权次数
+            map.put("categoryName", "textField_lvz45lih");//业务分类名称
+            map.put("fujian", "attachmentField_ltwktamq");//附件
+//            map.put("creatorName", "employeeField_ltwktal6");//创建人姓名
+//            map.put("creatorContact", "textField_ltsbwef1");//创建人联系方式
+//            map.put("receiverNameP", "textField_ltwa0vke");//对方个人签署人姓名
+//            map.put("contactP", "textField_ltwa0vkf");//对方个人签署人联系电话
+//            map.put("tenantNameA", "textField_ltwa0vk0");//对方公司名称
+//            map.put("receiverNameA", "textField_ltwa0vk1");//对方公司签署人名称
+//            map.put("contactA", "textField_ltwa0vk2");//对方公司签署人联系电话
+        } else if (type.equals("FORM-FCDDD18FD63E49B2A4C652FBDB1874F6DPHW")) {
+            // 租赁类用印 组件编号
+            map.put("subject", "textField_ltwcj54k");//合同名称
+            map.put("sn", "serialNumberField_ltwcj54l");//合同编号
+            map.put("tenantName", "textField_lvz3j6lq");//公司名称
+            map.put("tenantName1", "textField_lznvplmm");//公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("glbd", "associationFormField_lu0vkwu7");//物理印章关联表单
+            map.put("categoryId", "textField_lvz3j6ls");//业务分类Id
+            map.put("contractId", "textField_lwg1wbix");//合同Id
+            map.put("sealName", "textField_lwel4lyr");//授权印章名称
+            map.put("count", "numberField_ltwe0wyo");//授权次数
+            map.put("mobile", "textField_lwzqvg93");//授权人手机号
+            map.put("categoryName", "textField_ltwe0wyb");//业务分类名称
+            map.put("fujian", "attachmentField_ltwe0wyz");//附件
+            map.put("creatorName", "employeeField_ltwcj52j");//创建人姓名
+            map.put("applyerNumber", "textField_lwel4lyq");//创建人员工编号
+//            map.put("creatorContact", "textField_ltsbwef1");//创建人联系方式
+            map.put("tenantNameP", "textField_ltwe0wyw");//对方个人签署人姓名
+            map.put("contactP", "textField_ltwe0wyx");//对方个人签署人联系电话
+            map.put("tenantNameA", "textField_ltwe0wyq");//对方公司名称
+            map.put("receiverNameA", "textField_ltwe0wyr");//对方公司签署人名称
+            map.put("contactA", "textField_ltwe0wys");//对方公司签署人联系电话
+        } else if (type.equals("FORM-53A0FB8715FB4378B0708794DFAF7089SV8P")) {
+            // 加盟签约
+            map.put("subject", "textField_ltrzli9n");//合同名称
+            map.put("sn", "serialNumberField_ltsaig24");//合同编号
+            map.put("tenantName", "textField_lybee634");//公司名称
+            map.put("categoryId", "textField_lw4tkat0");//业务分类Id
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("glbd", "associationFormField_lwso6sgd");//物理印章关联表单
+            map.put("fujian", "attachmentField_luhu041t");//附件
+//            map.put("creatorName", "employeeField_ltrzli8r");//创建人姓名
+            map.put("categoryName", "textField_lvz1kozg");//业务分类名称
+            map.put("tenantNameP", "textField_lts1g8sc");//对方个人签署人姓名
+            map.put("applyerNumber", "textField_lybee62y");//创建人员工编号
+            map.put("sealName", "textField_lybee635");//授权印章名称
+            map.put("count", "numberField_lts1g8r9");//授权次数
+            map.put("contactP", "textField_lts1g8sd");//对方个人签署人联系电话
+            map.put("tenantNameA", "textField_lts1g8rs");//对方公司名称
+            map.put("receiverNameA", "textField_lts1g8ru");//对方公司签署人名称
+            map.put("contactA", "textField_lts1g8rt");//对方公司签署人联系电话
+        } else if (type.equals("FORM-88F968E75CC340EB91B1AC692F4184DC9I9W")) {
+            // 合同/申购流程
+            map.put("subject", "textField_lu7ycpub");//合同名称
+            map.put("sn", "serialNumberField_lu7ycpuc");//合同编号
+            map.put("tenantName", "textField_lygvcsw5");//公司名称textField_lu81zom2
+            map.put("tenantName1", "textField_lznvplmm");//公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("glbd", "associationFormField_lwrmm4p7");//物理印章关联表单
+            map.put("categoryId", "textField_lw05x5rm");//业务分类Id
+            map.put("contractId", "textField_lwg219kl");//合同Id
+            map.put("mobile", "textField_lwzqvg93");//授权人手机号
+            map.put("categoryName", "textField_lwa2350q");//业务分类名称
+            map.put("fujian", "attachmentField_lu81zomp");//附件
+            map.put("applyerNumber", "textField_lwelmmkr");//创建人员工编号
+            map.put("sealName", "textField_lwelmmks");//授权印章名称
+            map.put("count", "numberField_lual6ol8");//授权次数
+//            map.put("creatorName", "employeeField_ltsbwefl");//创建人姓名
+//            map.put("creatorContact", "textField_ltsbwef1");//创建人联系方式
+            map.put("tenantNameP", "textField_lu81zome");//对方个人签署人姓名
+            map.put("contactP", "textField_lu81zomf");//对方个人签署人联系电话
+            map.put("tenantNameA", "textField_lu81zomd");//对方公司名称
+            map.put("receiverNameA", "textField_lu81zome");//对方公司签署人名称
+            map.put("contactA", "textField_lu81zomf");//对方公司签署人联系电话
+
+        } else if (type.equals("FORM-54972289A0B7416287A9BA44DA6CCDC50QUC")) {
+            // HR用印
+            map.put("subject", "textField_lu9euh7n");//合同名称
+            map.put("sn", "serialNumberField_lu9euh7o");//合同编号
+            map.put("tenantName", "textField_lvzz59hk");//公司名称
+            map.put("tenantName1", "textField_lznvplmm");//公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("glbd", "associationFormField_lu9euh8b");//物理印章关联表单
+            map.put("categoryId", "textField_lvzz59hn");//业务分类Id
+            map.put("contractId", "textField_lwg22nvj");//合同Id
+            map.put("mobile", "textField_lwzqvg93");//授权人手机号
+            map.put("categoryName", "textField_lvzz59hm");//业务分类名称
+            map.put("applyerNumber", "textField_lweezm68");//创建人员工编号
+            map.put("sealName", "textField_lweezm69");//授权印章名称
+            map.put("count", "numberField_lu9euh8c");//授权次数
+            map.put("fujian", "attachmentField_lu9euh8d");//附件
+        } else if (type.equals("FORM-0D501EF1688247DC932E7784298BD46BRYHC")) {
+            // 新签劳动合同/协议
+            map.put("subject", "textField_luauhgb4");//合同名称
+            map.put("sn", "serialNumberField_luauhgb5");//合同编号
+            map.put("tenantName", "textField_lw4rpz1w");//公司名称
+            map.put("categoryId", "textField_lw4rpz1x");//业务分类Id
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("mobile", "textField_lwzqvg93");//授权人手机号
+            map.put("contractId", "textField_lwg241g6");//合同Id
+            map.put("jf", "textField_lwk0stof");//甲方名称
+            map.put("txdz", "textField_lup3q6ke");//甲方通讯地址
+            map.put("yf", "textField_lup3q6kf");//乙方
+            map.put("sjhm", "textField_lup3q6kg");//乙方手机号码
+            map.put("syqksrq", "dateField_lup3q6kv");//试用期开始日期
+            map.put("syqjsrq", "dateField_lup3q6kw");//试用期结束日期
+            map.put("ldhtksrq", "dateField_lup3q6kx");//劳动合同开始日期
+            map.put("ldhtjsrq", "dateField_lup3q6ky");//劳动合同结束日期
+            map.put("gzdd", "textField_lup3q6kk");//工作地点
+            map.put("yftgfw", "textField_lup3q6kh");//乙方提供服务
+            map.put("xchsgz", "selectField_lup3q6ki");//薪酬核算规则
+            map.put("dyzmtbc", "numberField_lup3q6kj");//报酬金额
+            map.put("dyzarksrq", "dateField_lup3q6kl");//开始日期
+            map.put("dyzarjsrq", "dateField_lup3q6km");//结束日期
+            map.put("contractId", "textField_lwg241g6");//合同Id
+            map.put("categoryName", "textField_lwa1xm1p");//业务分类名称
+            map.put("tenantNameP", "textField_lup3q6kf");//对方个人签署人姓名
+            map.put("contactP", "textField_lup3q6kg");//对方个人签署人联系电话
+        } else if (type.equals("FORM-3E04D5456B2341CCBA62C955B791CF45IAH1")) {
+            // 发文审批用印
+            map.put("subject", "textField_ltwmutnp");//合同名称
+            map.put("sn", "serialNumberField_ltwmutno");//合同编号
+            map.put("tenantName", "textField_lw044nmp");//公司名称
+            map.put("tenantName1", "textField_lznvplmm");//公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("categoryId", "textField_lw044nmr");//业务分类Id
+            map.put("glbd", "associationFormField_lu6mvmik");//物理印章关联表单
+            map.put("contractId", "textField_lwg251gn");//合同Id
+            map.put("mobile", "textField_lwzqvg93");//授权人手机号
+            map.put("categoryName", "textField_ltwmutoc");//业务分类名称
+            map.put("applyerNumber", "textField_lweluap2");//创建人员工编号
+            map.put("sealName", "textField_lweluap3");//授权印章名称
+            map.put("count", "numberField_ltwmutow");//授权次数
+            map.put("fujian", "attachmentField_ltwmutq4");//附件
+        } else if (type.equals("FORM-87BD065161F84560B999FE94713255E20E6E")) {
+            //印章授权&承诺书
+            map.put("subject", "textField_ltwp3e43");//合同名称
+            map.put("sn", "serialNumberField_ltwp3e44");//合同编号
+            map.put("tenantName", "textField_lw04hhp1");//公司名称
+            map.put("categoryId", "textField_lw04hhp3");//业务分类Id
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("contractId", "textField_lwg260n6");//合同Id
+            map.put("mobile", "textField_lwzqvg93");//授权人手机号
+            map.put("categoryName", "textField_lwa29saw");//业务分类名称
+            map.put("fujian", "attachmentField_ltwp3e4g");//附件
+            map.put("tenantNameP", "textField_lw93mjk9");//授权人姓名
+            map.put("contactP", "textField_ltwp3e4d");//授权人联系电话
+            map.put("tenantNameA", "textField_lw93mjka");//被授权人姓名
+            map.put("contactA", "textField_ltwp3e4f");//被授权人联系电话
+        } else if (type.equals("FORM-FD73905FB9C24E3A99244F901D9C98AFH4E6")) {
+            //合同续签流程
+            map.put("subject", "textField_lu991xi2");//合同名称
+            map.put("sn", "serialNumberField_lu991xi3");//合同编号
+            map.put("tenantName", "textField_lvz1kozf");//公司名称
+            map.put("categoryId", "textField_lvm5xmqe");//业务分类Id
+            map.put("categoryName", "textField_lvz1kozg");//业务分类名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("contact", "textField_lu991xih");//续签人手机号码
+            map.put("jf", "textField_lvz1kozf");//公司主体名称
+            map.put("sfzh", "textField_lu991xig");//续签人身份证号码
+            map.put("xm", "textField_lzkz3mkq");//续签人姓名
+            map.put("htkssj", "dateField_lu991xii");//合同开始时间
+            map.put("htjssj", "dateField_lu991xij");//合同结束时间
+            map.put("xdqxkssj", "dateField_lu991xim");//续订期限开始时间
+            map.put("xdqxjzsj", "dateField_lu991xin");//续订期限结束时间
+            map.put("zfjjbcjrq", "dateField_lzl3nrxf");//续订期限结束时间
+            map.put("jjbcj", "numberField_lzl3nrxg");//续订期限结束时间
+        } else {
+            throw new Exception();
+        }
+        return map.get(key);
+    }
 }
 
 

+ 59 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/controller/RSScheduleTask.java

@@ -0,0 +1,59 @@
+package com.malk.ruisi.controller;
+
+import com.malk.ruisi.service.RSService;
+import com.malk.ruisi.service.impl.RSImplService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @EnableScheduling 开启定时任务 [配置参考McScheduleTask]
+ */
+@Slf4j
+@Configuration
+@EnableScheduling
+@ConditionalOnProperty(name = {"spel.scheduling"})
+public class RSScheduleTask {
+
+    @Autowired
+    private RSService rsService;
+
+    /**
+     * 每天凌晨5点同步
+     */
+    @Scheduled(cron = "0 0 5 * * ? ")
+    public void syncDingTalkFailedList() {
+        try {
+            rsService.syncDingTalk_exclusive();
+        } catch (Exception e) {
+            // 记录错误信息
+            e.printStackTrace();
+        }
+    }
+    /// 数据缓存 + 图片缓存, 10 分钟更新一次
+    private Map portal_cache = new HashMap();
+
+//    @Scheduled(cron = "0 0 5 * * ? ")
+    @Scheduled(cron = "0 */8 * * * ?")
+    public void hzmhByType() {
+        try {
+            rsService.getDataList();
+//            portal_cache = new HashMap();
+//            rsService.getPortalList("财务专区");
+//            rsService.getPortalList("公司头条");
+//            rsService.getPortalList("企业文化");
+//            rsService.getPortalList("员工自助");
+//            rsService.getPortalList("规章制度");
+
+        } catch (Exception e) {
+            // 记录错误信息
+            e.printStackTrace();
+        }
+    }
+}

+ 54 - 6
mjava-ruisi/src/main/java/com/malk/ruisi/controller/RsQysController.java

@@ -1,14 +1,13 @@
 package com.malk.ruisi.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.malk.ruisi.service.RsQysService;
+import com.malk.ruisi.service.dingshiqi;
 import com.malk.server.common.McR;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @Slf4j
@@ -27,15 +26,17 @@ public class RsQysController {
 
     @PostMapping("/createbyfile")
     public McR createByFile(@RequestBody JSONObject param) throws Exception {
+        log.info("createbyfile:{}", JSON.toJSONString(param));
         return rsQysService.createByFile(param);
     }
     /***
-     * 创建新签合同
+     * 创建校区劳动新签合同
      * @param
      * @return
      */
     @PostMapping("/createContract")
     public McR createContract(@RequestBody JSONObject param) throws Exception {
+        log.info("createContract:{}", JSON.toJSONString(param));
         return rsQysService.createContract(param);
     }
 
@@ -46,6 +47,7 @@ public class RsQysController {
      */
     @PostMapping("/createReContract")
     public McR createReContract(@RequestBody JSONObject param) throws Exception {
+        log.info("createReContract:{}", JSON.toJSONString(param));
         return rsQysService.createReContract(param);
     }
     /***
@@ -55,11 +57,46 @@ public class RsQysController {
      */
     @PostMapping("/appointurl")
     public McR appointurl(String contractId) throws Exception {
-        log.info("进入 预签署 接口,参数:{}",contractId);
+        log.info("appointurl:{}",contractId);
 //            String contractId=String.valueOf(param.getString("contractId"));
 //            return McR.success(contractId);
         return rsQysService.appointurl(contractId);
     }
+
+    /***
+     * 浏览合同
+     * @param
+     * @return
+     */
+    @PostMapping("/viewurl")
+    public McR viewurl(String contractId,String pageType) throws Exception {
+        log.info("viewurl:{},{}",contractId,pageType);
+        return rsQysService.viewurl(contractId,pageType);
+    }
+
+
+    /***
+     * 签署合同
+     * @param
+     * @return
+     */
+    @PostMapping("/audit")
+    public McR audit(String contractId) throws Exception {
+        log.info("contractId:{}",contractId);
+        return rsQysService.audit(contractId);
+    }
+//    /***
+//     * 预签署  可重复获取
+//     * @param
+//     * @return
+//     */
+//    @PostMapping("/downloadappointurl")
+//    public McR downloadappointurl(String contractId) throws Exception {
+//        log.info("appointurl:{}",contractId);
+////            String contractId=String.valueOf(param.getString("contractId"));
+////            return McR.success(contractId);
+//        return rsQysService.appointurldownload(contractId);
+//    }
 //    /***
 //     * 第二步
 //     * 发起合同、完成发起方签署
@@ -92,4 +129,15 @@ public class RsQysController {
         log.info("进入 apply 接口,参数:{}",param);
         return rsQysService.signurl(param);
     }
+    @Autowired
+    private dingshiqi timer;
+    /**
+     * 同步同步契约锁档案
+     */
+    @GetMapping("sync-qys")
+    public McR syncQys(@RequestParam String type) {
+
+        timer.syncCommon(type);
+        return McR.success();
+    }
 }

+ 101 - 17
mjava-ruisi/src/main/java/com/malk/ruisi/controller/ScheduleTask.java

@@ -1,6 +1,7 @@
 package com.malk.ruisi.controller;
 
 import cn.hutool.core.io.FileUtil;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.malk.ruisi.service.dingshiqi;
 import com.malk.ruisi.service.impl.dingshiqiImpl;
@@ -46,8 +47,8 @@ public class ScheduleTask {
     /**
      * 每月查询业务ID
      */
-    @Scheduled(cron = "0 0 0 26 * ?")
-//    @Scheduled(cron = "0/10 * * * * ?")
+    @Scheduled(cron = "0 23 12 * * ?")
+//    @Scheduled(cron = "0 0 4 * * ?")
     public void syncRecruitSource() {
         try {
             System.out.println("开始上传业务ID");
@@ -63,8 +64,9 @@ public class ScheduleTask {
     /**
      * 每月查询物理印章ID
      */
-//    @Scheduled(cron = "0/1 * * * * ?")
-    @Scheduled(cron = "0 0 0 26 * ?")
+    @Scheduled(cron = "0 45 3 * * ?")
+//    @Scheduled(cron = "0 26 11 * * ?")
+//   @Scheduled(cron = "0/1 * * * * ?")
     public void syncRecruitSource1() {
         try {
             System.out.println("开始上传物理印章ID");
@@ -77,30 +79,112 @@ public class ScheduleTask {
         }
     }
 
-//    @Scheduled(cron = "*/10 * * * *")
+    //    @Scheduled(cron = "0/1 * * * * ?")
+    @Scheduled(cron = "0 0/10 * * * ?")
     public void syncRecruitSource3() {
+        dingshiqiImpl dingshiqi = new dingshiqiImpl();
         List<Map> datalist = (List<Map>) ydClient.queryData(YDParam.builder()
                 .formUuid("FORM-F7B0E685C56E41FC939A581F8B7C2665PXPV")
-                .build(), YDConf.FORM_QUERY.retrieve_search_form);
+                .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
+
         for (Map map : datalist) {
             Map formData = (Map) map.get("formData");
-            boolean flag = false;
-            String sn = String.valueOf(formData.get("textField_lzns5l3l"));
-            try {
-                taskExecute(String.valueOf(formData.get("textField_lzns5l3l")), String.valueOf(formData.get("textField_lzns5l3k")));
-                flag = true;
-            } catch (McException e) {
+            String instanceId = String.valueOf(formData.get("textField_lzns5l3k"));
+            String taskId = (String) formData.get("textField_lzns5l3m");
 
+            if (taskId.equals("0")) {
+                Map param2 = new HashMap();
+                param2.put("x-acs-dingtalk-access-token", dingshiqi.getAccessToken_PJSS());
+                Map body3 = new HashMap();
+                body3.put("appType", "APP_VCTRP6227CC8368NDOID");
+                body3.put("systemToken", "5H9662C1X8XJLFFCE841M5VBEBQ73DM5IBPULPI3");
+                body3.put("processInstanceId", instanceId);
+                body3.put("userId", YDConf.PUB_ACCOUNT);
+                String s = UtilHttp.doGet("https://api.dingtalk.com/v1.0/yida/processes/operationRecords", param2, (Map<String, Object>) body3);
+                JSONObject obj = JSONObject.parseObject(s);
+                JSONArray arr = obj.getJSONArray("result");
+                for (int i = 0; i < arr.size(); i++) {
+                    JSONObject json = arr.getJSONObject(i);
+                    log.info("json:{},{}", json.getString("operatorUserId"), json.getString("type"));
+                    if (json.getString("operatorUserId").equals("13810479803") && json.getString("type").equals("TODO")) {
+                        taskId = json.getString("taskId");
+                        break;
+                    }
+                }
             }
-            if (flag) {
+
+            if (!taskId.equals("0")) {
+                taskExecute(instanceId, taskId);
+
                 ydClient.operateData(YDParam.builder()
-                        .formInstanceId(sn)
+                        .formInstanceId(UtilMap.getString(map, "formInstanceId"))
                         .build(), YDConf.FORM_OPERATION.delete);
             }
         }
 
     }
 
+    private Map<String, String> getFormUuid(String type) {
+        Map<String, String> map = UtilMap.empty();
+        switch (type) {
+            case "HT01"://合同
+                map.put("type", "FORM-55D56A69CCCE4043A01660C8910E33BAQ4N0");
+                map.put("sn", "serialNumberField_ltsbweh2");
+                map.put("contractId", "textField_lwah8x72");
+                break;
+            case "CG11"://框架采购
+                map.put("type", "FORM-82E566F8576E44D3AB4B34033A27E76FEB75");
+                map.put("sn", "serialNumberField_ltsbweh2");
+                map.put("contractId", "textField_lwah8x72");
+                break;
+            case "HT02"://框架
+                map.put("type", "FORM-5DB656AF0F0E4EFA85A4739D55C23ED85BXO");
+                map.put("sn", "serialNumberField_lvz8coae");
+                map.put("contractId", "textField_lwg205ug");
+                break;
+            case "HT03"://租赁
+                map.put("type", "FORM-FCDDD18FD63E49B2A4C652FBDB1874F6DPHW");
+                map.put("sn", "serialNumberField_ltwcj54l");
+                map.put("contractId", "textField_lwg1wbix");
+                break;
+            case "XZ04"://其他
+                map.put("type", "FORM-B27C1AE7298648F29E836B5FDF469DBDPFCK");
+                map.put("sn", "serialNumberField_ltwktal5");
+                break;
+            case "HTSG"://合同/申购
+                map.put("type", "FORM-88F968E75CC340EB91B1AC692F4184DC9I9W");
+                map.put("sn", "serialNumberField_lu7ycpuc");
+                map.put("contractId", "textField_lwg219kl");
+                break;
+            case "HR03"://hr用印
+                map.put("type", "FORM-54972289A0B7416287A9BA44DA6CCDC50QUC");
+                map.put("sn", "serialNumberField_lu9euh7o");
+                break;
+            case "HR18"://新签劳动合同/协议
+                map.put("type", "FORM-0D501EF1688247DC932E7784298BD46BRYHC");
+                map.put("sn", "serialNumberField_luauhgb5");
+                map.put("contractId", "textField_lwg241g6");
+                break;
+            case "XZ05"://发文审批
+                map.put("type", "FORM-3E04D5456B2341CCBA62C955B791CF45IAH1");
+                map.put("sn", "serialNumberField_ltwmutno");
+                break;
+            case "XZ08"://印章授权
+                map.put("type", "FORM-87BD065161F84560B999FE94713255E20E6E");
+                map.put("sn", "serialNumberField_ltwp3e44");
+                break;
+            case "XZQYLC"://加盟签约
+                map.put("type", "FORM-53A0FB8715FB4378B0708794DFAF7089SV8P");
+                map.put("sn", "serialNumberField_ltsaig24");
+                break;
+            case "HR02"://合同续签
+                map.put("type", "FORM-FD73905FB9C24E3A99244F901D9C98AFH4E6");
+                map.put("sn", "serialNumberField_lu991xi3");
+                break;
+        }
+        return map;
+    }
+
     private void taskExecute(String instanceId, String taskId) {
         Map param3 = new HashMap();
         param3.put("x-acs-dingtalk-access-token", new dingshiqiImpl().getAccessToken_PJSS());
@@ -120,8 +204,8 @@ public class ScheduleTask {
      * 每月查询电子印章ID
      * //
      */
-    @Scheduled(cron = "0 0 0 26 * ?")
-//    @Scheduled(cron = "0 0 0 * * ?")
+    @Scheduled(cron = "0 30 3 * * ?")
+//    @Scheduled(cron = "0 48 14 * * *")
     public void syncRecruitSource2() {
         try {
             System.out.println("开始上传电子印章ID");
@@ -147,7 +231,7 @@ public class ScheduleTask {
         }
     }
 
-    //        @Scheduled(cron = "0/1 * * * * ?")
+//                @Scheduled(cron = "0/1 * * * * ?")
     public void syncDelete() {
 
         log.info("开始删除数据");

+ 15 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/server/YDParam_T.java

@@ -0,0 +1,15 @@
+package com.malk.ruisi.server;
+
+import com.malk.server.aliwork.YDParam;
+import lombok.Data;
+
+@Data
+public class YDParam_T extends YDParam {
+
+    /// 查询创建时间, 钉钉版本接口 [旧版本接口不支持]
+    private String createFromTimeGMT;
+    private String createToTimeGMT;
+
+    private String modifiedFromTimeGMT;
+    private String modifiedToTimeGMT;
+}

+ 2 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/service/QysApiService.java

@@ -15,4 +15,6 @@ public interface QysApiService {
     JSONObject sendPostFile(Map param, String url)throws Exception;
 
     void getFile(Map param, String url, File file)throws Exception;
+
+//    void getFile1(Map param, String url)throws Exception;
 }

+ 8 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/service/QysService.java

@@ -22,9 +22,17 @@ public interface QysService {
 
     void download(String contractId, File file)throws Exception;
 
+//    void download1(String contractId)throws Exception;
+
     JSONObject createseal(Map map) throws Exception;
 
     JSONObject applyseals(Map param) throws Exception;
 
     JSONObject signurla(Map signatory) throws Exception;
+
+    JSONObject viewurl(String contractId, String pageType) throws Exception;
+
+    JSONObject audit(String contractId) throws Exception;
+
+//    JSONObject appointurldownload(String contractId) throws Exception;
 }

+ 24 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/service/RSService.java

@@ -0,0 +1,24 @@
+package com.malk.ruisi.service;
+
+import java.util.List;
+import java.util.Map;
+
+public interface RSService {
+
+    /**
+     * 同步钉钉企业账号
+     */
+    void syncDingTalk_exclusive();
+
+    /**
+     * 重置企业账号密码
+     */
+    void resetPwd(Map data);
+
+
+    List<Map> getPortalList(String section);
+
+    void getDataList();
+
+    void shareRecord(String processInstanceId,Map data);
+}

+ 8 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/service/RsQysService.java

@@ -25,6 +25,14 @@ public interface RsQysService {
 
     String callback1(Map<String, String> param) throws Exception;
 
+    McR viewurl(String contractId, String pageType) throws Exception;
+
+    McR audit(String contractId) throws Exception;
+
+    ;
+
+//    McR appointurldownload(String contractId) throws Exception;
+
 
 //    String callback(JSONObject param);
 }

+ 12 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/service/dingshiqi.java

@@ -12,4 +12,16 @@ public interface dingshiqi {
     JSONObject getYWFLid2()throws Exception;
 
     void syncDelete()throws Exception;
+
+    /**
+     * 契约锁仅会返回启用数据,因此在宜搭增加两个字段一个启用状态一个同步时间,数据同步以后获取前一天没有同步的数据停用
+     *
+     * @param type YWFL 业务分类, YZWL 物理印章, YZDZ 电子印章
+     */
+    void syncRecruitSource(String type);
+
+    /**
+     * 同步数据公共方法, 手动 + 定时
+     */
+    void syncCommon(String type);
 }

+ 12 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/service/impl/QysApiServiceImpl.java

@@ -67,6 +67,18 @@ public class QysApiServiceImpl implements QysApiService {
         }
     }
 
+//    @Override
+//    public void getFile1(Map param, String url) throws Exception {
+//        try {
+//            HttpRequest httpRequest = createRequest(param, false, false, url);
+//            InputStream is = httpRequest.execute().bodyStream();
+//            byte[] buf = IoUtil.readBytes(is);
+//            FileUtil.writeBytes(buf);
+//        } catch (Exception e) {
+//            throw new Exception("请求契约锁接口异常", e);
+//        }
+//    }
+
     public JSONObject sendData(Map param, Boolean isPost, Boolean isBody, String url) throws Exception {
         JSONObject resultObj = null;
         try {

+ 33 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/service/impl/QysServiceImpl.java

@@ -75,6 +75,19 @@ public class QysServiceImpl implements QysService {
         log.info("下载完成:文件大小:{}",file.length());
     }
 
+//    /***
+//     * 下载签署后文件
+//     * @param contractId
+//     * @param
+//     * @throws Exception
+//     */
+//    @Override
+//    public void download1(String contractId) throws Exception {
+//        log.info("下载文件:{}");
+//        qysApiService.getFile1(new JSONObject().fluentPut("contractId",contractId),QYS_API_DOWNLOAD);
+//        log.info("下载完成:文件大小:{}");
+//    }
+
     @Override
     public JSONObject createseal(Map map) throws Exception {
         return qysApiService.sendPost(map,QYS_API_SEALBYCATEGORY);
@@ -89,4 +102,24 @@ public class QysServiceImpl implements QysService {
     public JSONObject signurla(Map signatory) throws Exception {
         return qysApiService.sendPost(signatory,QYS_API_SIGNURL);
     }
+
+    @Override
+    public JSONObject viewurl(String contractId, String pageType) throws Exception {
+        Map<String,Object> data=new HashMap();
+        data.put("contractId",contractId);
+        data.put("pageType","CONTENT");
+        return qysApiService.sendGet(data,QYS_API_CONTRACT_VIEWURL);
+    }
+
+    @Override
+    public JSONObject audit(String contractId) throws Exception {
+        Map<String,Object> data=new HashMap();
+        data.put("contractId",contractId);
+        return qysApiService.sendPost(data,QYS_API_AUDIA);
+    }
+
+//    @Override
+//    public JSONObject appointurldownload(String contractId) throws Exception {
+//         return qysApiService.sendGet(data,QYS_API_CATEGORIES,false);;
+//    }
 }

+ 175 - 0
mjava-ruisi/src/main/java/com/malk/ruisi/service/impl/RSImplService.java

@@ -0,0 +1,175 @@
+package com.malk.ruisi.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.malk.ruisi.service.RSService;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McException;
+import com.malk.service.aliwork.YDClient;
+import com.malk.service.aliwork.YDService;
+import com.malk.service.dingtalk.DDClient;
+import com.malk.service.dingtalk.DDClient_Contacts;
+import com.malk.utils.UtilDateTime;
+import com.malk.utils.UtilMap;
+import com.malk.utils.UtilServlet;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
+import java.util.stream.Collectors;
+@EnableScheduling
+@Service
+@Slf4j
+public class RSImplService implements RSService {
+
+    @Autowired
+    private YDService ydService;
+
+    @Autowired
+    private YDClient ydClient;
+
+    @Autowired
+    private DDClient_Contacts ddClient_contacts;
+
+    @Autowired
+    private DDClient ddClient;
+
+    @Autowired
+    private static final long DEPT_ID = 933074211L; // 合作加盟校区
+
+
+    /// 创建企业账号: loginI/userId 都为 SHR 工号
+    private void createExclusiveUser(String loginId, String name) {
+
+        final String PASS_WORD = "tzr@111111";
+
+        Map info = UtilMap.map("userid", loginId);
+        ddClient_contacts.createUser_dingTalk(ddClient.getAccessToken(), loginId, PASS_WORD, name, Arrays.asList(DEPT_ID), info);
+    }
+
+    /**
+     * 同步钉钉企业账号
+     */
+    @Override
+    public void syncDingTalk_exclusive() {
+
+        List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
+                .formUuid("FORM-11B80FC621CA4DB9A35364CFBFF7287538KR")
+                .build());
+        dataList.forEach(data -> {
+            if (!"是".equals(UtilMap.getString(data, "radioField_m0hlup9w"))) {
+                String userId = UtilMap.getString(data, "textField_lztc6k3k");
+                String message = "";
+                try {
+                    this.createExclusiveUser(userId, UtilMap.getString(data, "textField_lxsm8xow"));
+                } catch (McException e) {
+                    message = e.getMessage();
+                    log.error(e.getMessage(), e);
+                }
+                ydClient.operateData(YDParam.builder()
+                        .formInstanceId(UtilMap.getString(data, "instanceId"))
+                        .useLatestVersion(true)
+                        .updateFormDataJson(JSON.toJSONString(UtilMap.map("radioField_m0hlup9w, employeeField_m0hlup9v, textareaField_m0hs4k90", "是", Arrays.asList(userId), message)))
+                        .build(), YDConf.FORM_OPERATION.update);
+            }
+        });
+    }
+    
+    /**
+     * 重置企业账号密码
+     */
+    @Override
+    public void resetPwd(Map data) {
+        ddClient_contacts.updateUser_dingTalk(ddClient.getAccessToken(), UtilMap.getString(data, "userId"), Arrays.asList(DEPT_ID), UtilMap.map("init_password", UtilMap.getString(data, "password")));
+    }
+
+    @Override
+    public List<Map> getPortalList(String section) {
+        return _portalList(section);
+    }
+
+    @Override
+    public void getDataList() {
+        try {
+
+            portal_cache = new HashMap();
+            getPortalList("财务专区");
+            getPortalList("公司头条");
+            getPortalList("企业文化");
+            getPortalList("员工自助");
+            getPortalList("规章制度");
+
+        } catch (Exception e) {
+            // 记录错误信息
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void shareRecord(String processInstanceId,Map data) {
+        // 执行分享逻辑 [ 拼接后的权限组 ]
+        McException.assertParamException_Null(data, "compId, userIds, userId, content");
+        ydClient.operateData(YDParam.builder()
+                .formInstId(processInstanceId)
+                .updateFormDataJson(JSON.toJSONString(UtilMap.map(UtilMap.getString(data, "compId"), UtilMap.getList(data, "userIds"))))
+                .build(), YDConf.FORM_OPERATION.update);
+
+        YDParam ydParam = YDParam.builder()
+                .formInstanceId(processInstanceId)
+                .userId(UtilMap.getString(data, "userId"))
+                .content(UtilMap.getString(data, "content"))
+                .build();
+        if (UtilMap.getBoolean(data, "isNotice")) {
+            ydParam.setAtUserId(UtilMap.getString(data, "atUserId"));
+        }
+        ydClient.operateData(ydParam, YDConf.FORM_OPERATION.remarks);
+    }
+
+
+    /// 数据缓存 + 图片缓存, 10 分钟更新一次
+    private Map portal_cache = new HashMap();
+
+    /**
+     * 工作台数据
+     */
+    private List<Map> _portalList(String type) {
+
+        List<Map> pList = UtilMap.getList(portal_cache, type);
+
+        if (pList.isEmpty()) {
+            List<Map> dataList = (List<Map>) ydClient.queryData(YDParam.builder()
+                    .formUuid("FORM-D46C46DACD644467B8F6902EBFD8FDFEYFOX")
+                    .pageSize(5)
+                    .searchFieldJson(JSONObject.toJSONString(UtilMap.map("selectField_m17kv4an", type)))
+                    .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
+
+            dataList.sort(Comparator.comparingInt(item -> UtilMap.getInt(item, "numberField_m17kv4ao"))); // 排序
+            pList = dataList.stream().map(item -> {
+                Map formData = UtilMap.getMap(item, "formData");
+
+                Map row = UtilMap.map("title, source, link", UtilMap.getString(formData, "textField_m17kv4aq"), UtilMap.getString(formData, "textField_m17kv4as"), UtilMap.getString(formData, "textField_m17kv4at"));
+                long date = UtilMap.getLong(formData, "dateField_m17kv4ar");
+                if (date > 0L) {
+                    row.put("dateTime", UtilDateTime.format(new Date(date), "yyyy-MM-dd HH:mm"));
+                }
+                // 图片免登处理
+                String image = UtilMap.getString(formData, "imageField_m1abjxl0");
+                if (StringUtils.isNotBlank(image)) {
+                    List<Map> attas = (List<Map>) JSON.parse(image);
+                    row.put("image", ydClient.convertTemporaryUrl(UtilMap.getString(attas.get(0), "url")));
+                }
+                return row;
+            }).collect(Collectors.toList());
+            portal_cache.put(type, pList);
+        }
+        return pList;
+    }
+
+}

+ 306 - 65
mjava-ruisi/src/main/java/com/malk/ruisi/service/impl/RsQysServiceImpl.java

@@ -60,15 +60,43 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("subject", "textField_ltsbwegw");//合同名称
             map.put("sn", "serialNumberField_ltsbweh2");//合同编号
             map.put("tenantName", "textField_lvz1kozf");//公司名称
-            map.put("tenantName1", "textField_ltxu1n14");//印章公司名称
+            map.put("tenantName1", "textField_lznvplmm");//印章公司id
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
             map.put("glbd", "associationFormField_lu0u6npd");//物理印章关联表单
             map.put("categoryId", "textField_lvm5xmqe");//业务分类Id
             map.put("contractId", "textField_lwah8x72");//合同Id
             map.put("categoryName", "textField_lvz1kozg");//业务分类名称
             map.put("fujian", "attachmentField_ltsbweir");//附件
+            map.put("fujian1", "attachmentField_m11gjcqu");//附件
             map.put("creatorName", "employeeField_ltsbwefl");//创建人姓名
             map.put("applyerNumber", "textField_lwebkb16");//创建人员工编号
             map.put("sealName", "textField_lvw4umfr");//授权印章名称
+            map.put("sealId", "textField_m0dh8wmp");//印章id
+            map.put("count", "numberField_ltwa0vj6");//授权次数
+            map.put("mobile", "textField_lwzqvg93");//授权人手机号
+            map.put("tenantNameP", "textField_ltwa0vke");//对方个人签署人姓名
+            map.put("contactP", "textField_ltwa0vkf");//对方个人签署人联系电话
+            map.put("tenantNameA", "textField_ltwa0vk0");//对方公司名称
+            map.put("receiverNameA", "textField_ltwa0vk1");//对方公司签署人名称
+            map.put("contactA", "textField_ltwa0vk2");//对方公司签署人联系电话
+        } else if (type.equals("FORM-82E566F8576E44D3AB4B34033A27E76FEB75")) {
+            // CG11-框架采购订单
+            map.put("subject", "textField_ltsbwef0");//合同名称
+            map.put("sn", "serialNumberField_ltsbweh2");//合同编号
+            map.put("tenantName", "textField_lvz1kozf");//公司名称
+            map.put("tenantName1", "textField_lznvplmm");//印章公司id
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("glbd", "associationFormField_lu0u6npd");//物理印章关联表单
+            map.put("categoryId", "textField_lvm5xmqe");//业务分类Id
+            map.put("contractId", "textField_lwah8x72");//合同Id
+            map.put("categoryName", "textField_lvz1kozg");//业务分类名称
+            map.put("fujian", "attachmentField_ltsbweis");//附件
+            map.put("creatorName", "employeeField_ltsbwefl");//创建人姓名
+            map.put("applyerNumber", "textField_lwebkb16");//创建人员工编号
+            map.put("sealName", "textField_lvw4umfr");//授权印章名称
+            map.put("sealId", "textField_m0dh8wmp");//印章id
             map.put("count", "numberField_ltwa0vj6");//授权次数
             map.put("mobile", "textField_lwzqvg93");//授权人手机号
             map.put("tenantNameP", "textField_ltwa0vke");//对方个人签署人姓名
@@ -81,15 +109,19 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("subject", "textField_lvz8coad");//合同名称
             map.put("sn", "serialNumberField_lvz8coae");//合同编号
             map.put("tenantName", "textField_lvza5uwu");//公司名称
-            map.put("tenantName1", "textField_lvz8cobs");//印章公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("tenantName1", "textField_lznvplmm");//印章公司名称
             map.put("glbd", "associationFormField_lvz8coby");//物理印章关联表单
             map.put("categoryId", "textField_lvz8cobe");//业务分类Id
             map.put("contractId", "textField_lwg205ug");//合同Id
             map.put("categoryName", "textField_lvz8cobd");//业务分类名称
             map.put("fujian", "attachmentField_lvz8cocl");//附件
+            map.put("fujian1", "attachmentField_m11gqbly");//附件
             map.put("creatorName", "employeeField_lvz8co98");//创建人姓名
             map.put("applyerNumber", "textField_lweccz0q");//创建人员工编号
             map.put("sealName", "textField_lwelg27e");//授权印章名称
+            map.put("sealId", "textField_m0dhf7ph");//印章id
             map.put("mobile", "textField_lwzqvg93");//授权人手机号
             map.put("count", "numberField_lvz8cobz");//授权次数
             map.put("tenantNameP", "textField_lvz8cocg");//对方个人签署人姓名
@@ -103,16 +135,20 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("subject", "textField_ltwktal4");//合同名称
             map.put("sn", "serialNumberField_ltwktal5");//合同编号
             map.put("tenantName", "textField_lvz45lif");//公司名称
-            map.put("tenantName1", "textField_ltwktamn");//印章公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+            map.put("tenantName1", "textField_lznvplmm");//印章公司名称
             map.put("categoryId", "textField_lvz45lii");//业务分类Id
             map.put("glbd", "associationFormField_lu0w0l7x");//物理印章关联表单
             map.put("contractId", "textField_lwg1z6hk");//合同Id
             map.put("applyerNumber", "textField_lwelap55");//创建人员工编号
             map.put("sealName", "textField_lx1gzqai");//授权印章名称
+            map.put("sealId", "textField_m0dhpgjr");//印章id
             map.put("mobile", "textField_lwzqvg93");//授权人手机号
             map.put("count", "numberField_ltwktalp");//授权次数
             map.put("categoryName", "textField_lvz45lih");//业务分类名称
             map.put("fujian", "attachmentField_ltwktamq");//附件
+            map.put("fujian1", "attachmentField_ltwktamr");//附件
 //            map.put("creatorName", "employeeField_ltwktal6");//创建人姓名
 //            map.put("creatorContact", "textField_ltsbwef1");//创建人联系方式
 //            map.put("receiverNameP", "textField_ltwa0vke");//对方个人签署人姓名
@@ -125,11 +161,14 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("subject", "textField_ltwcj54k");//合同名称
             map.put("sn", "serialNumberField_ltwcj54l");//合同编号
             map.put("tenantName", "textField_lvz3j6lq");//公司名称
-            map.put("tenantName1", "textField_ltwe0wye");//公司名称
+            map.put("tenantName1", "textField_lznvplmm");//公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
             map.put("glbd", "associationFormField_lu0vkwu7");//物理印章关联表单
             map.put("categoryId", "textField_lvz3j6ls");//业务分类Id
             map.put("contractId", "textField_lwg1wbix");//合同Id
             map.put("sealName", "textField_lwel4lyr");//授权印章名称
+            map.put("sealId", "textField_m0dhqv5m");//印章id
             map.put("count", "numberField_ltwe0wyo");//授权次数
             map.put("mobile", "textField_lwzqvg93");//授权人手机号
             map.put("categoryName", "textField_ltwe0wyb");//业务分类名称
@@ -148,10 +187,12 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("sn", "serialNumberField_ltsaig24");//合同编号
             map.put("tenantName", "textField_lybee634");//公司名称
             map.put("categoryId", "textField_lw4tkat0");//业务分类Id
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
             map.put("glbd", "associationFormField_lwso6sgd");//物理印章关联表单
-            map.put("fujian", "attachmentField_luhu041r");//附件
-            map.put("creatorName", "employeeField_ltrzli8r");//创建人姓名
-//            map.put("creatorContact", "textField_ltsbwef1");//创建人联系方式
+            map.put("fujian", "attachmentField_luhu041t");//附件
+//            map.put("creatorName", "employeeField_ltrzli8r");//创建人姓名
+            map.put("categoryName", "textField_lvz1kozg");//业务分类名称
             map.put("tenantNameP", "textField_lts1g8sc");//对方个人签署人姓名
             map.put("applyerNumber", "textField_lybee62y");//创建人员工编号
             map.put("sealName", "textField_lybee635");//授权印章名称
@@ -165,7 +206,9 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("subject", "textField_lu7ycpub");//合同名称
             map.put("sn", "serialNumberField_lu7ycpuc");//合同编号
             map.put("tenantName", "textField_lygvcsw5");//公司名称textField_lu81zom2
-            map.put("tenantName1", "textField_lu81zom2");//公司名称
+            map.put("tenantName1", "textField_lznvplmm");//公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
             map.put("glbd", "associationFormField_lwrmm4p7");//物理印章关联表单
             map.put("categoryId", "textField_lw05x5rm");//业务分类Id
             map.put("contractId", "textField_lwg219kl");//合同Id
@@ -174,11 +217,12 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("fujian", "attachmentField_lu81zomp");//附件
             map.put("applyerNumber", "textField_lwelmmkr");//创建人员工编号
             map.put("sealName", "textField_lwelmmks");//授权印章名称
+            map.put("sealId", "textField_m0dhtx3s");//印章id
             map.put("count", "numberField_lual6ol8");//授权次数
 //            map.put("creatorName", "employeeField_ltsbwefl");//创建人姓名
-//            map.put("creatorContact", "textField_ltsbwef1");//创建人联系方
-            map.put("tenantNameP", "textField_lu81zome");//对方个人签署人姓名
-            map.put("contactP", "textField_lu81zomf");//对方个人签署人联系电话
+//            map.put("creatorContact", "textField_ltsbwef1");//创建人联系方
+            map.put("tenantNameP", "textField_ltwa0vke");//对方个人签署人姓名
+            map.put("contactP", "textField_ltwa0vkf");//对方个人签署人联系电话
             map.put("tenantNameA", "textField_lu81zomd");//对方公司名称
             map.put("receiverNameA", "textField_lu81zome");//对方公司签署人名称
             map.put("contactA", "textField_lu81zomf");//对方公司签署人联系电话
@@ -188,7 +232,9 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("subject", "textField_lu9euh7n");//合同名称
             map.put("sn", "serialNumberField_lu9euh7o");//合同编号
             map.put("tenantName", "textField_lvzz59hk");//公司名称
-            map.put("tenantName1", "textField_lu9euh86");//公司名称
+            map.put("tenantName1", "textField_lznvplmm");//公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
             map.put("glbd", "associationFormField_lu9euh8b");//物理印章关联表单
             map.put("categoryId", "textField_lvzz59hn");//业务分类Id
             map.put("contractId", "textField_lwg22nvj");//合同Id
@@ -196,14 +242,18 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("categoryName", "textField_lvzz59hm");//业务分类名称
             map.put("applyerNumber", "textField_lweezm68");//创建人员工编号
             map.put("sealName", "textField_lweezm69");//授权印章名称
+            map.put("sealId", "textField_m0dhwqon");//印章id
             map.put("count", "numberField_lu9euh8c");//授权次数
-            map.put("fujian", "attachmentField_lu9euh8d");//附件
+            map.put("fujian", "attachmentField_lzvac8lu");//附件
+            map.put("fujian1", "attachmentField_lzv9up2n");//附件1
         } else if (type.equals("FORM-0D501EF1688247DC932E7784298BD46BRYHC")) {
             // 新签劳动合同/协议
             map.put("subject", "textField_luauhgb4");//合同名称
             map.put("sn", "serialNumberField_luauhgb5");//合同编号
             map.put("tenantName", "textField_lw4rpz1w");//公司名称
             map.put("categoryId", "textField_lw4rpz1x");//业务分类Id
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
             map.put("mobile", "textField_lwzqvg93");//授权人手机号
             map.put("contractId", "textField_lwg241g6");//合同Id
             map.put("jf", "textField_lwk0stof");//甲方名称
@@ -229,7 +279,9 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("subject", "textField_ltwmutnp");//合同名称
             map.put("sn", "serialNumberField_ltwmutno");//合同编号
             map.put("tenantName", "textField_lw044nmp");//公司名称
-            map.put("tenantName1", "textField_ltwmutom");//公司名称
+            map.put("tenantName1", "textField_lznvplmm");//公司名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
             map.put("categoryId", "textField_lw044nmr");//业务分类Id
             map.put("glbd", "associationFormField_lu6mvmik");//物理印章关联表单
             map.put("contractId", "textField_lwg251gn");//合同Id
@@ -237,6 +289,7 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("categoryName", "textField_ltwmutoc");//业务分类名称
             map.put("applyerNumber", "textField_lweluap2");//创建人员工编号
             map.put("sealName", "textField_lweluap3");//授权印章名称
+            map.put("sealId", "textField_m0dhyj02");//印章id
             map.put("count", "numberField_ltwmutow");//授权次数
             map.put("fujian", "attachmentField_ltwmutq4");//附件
         } else if (type.equals("FORM-87BD065161F84560B999FE94713255E20E6E")) {
@@ -245,6 +298,8 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("sn", "serialNumberField_ltwp3e44");//合同编号
             map.put("tenantName", "textField_lw04hhp1");//公司名称
             map.put("categoryId", "textField_lw04hhp3");//业务分类Id
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
             map.put("contractId", "textField_lwg260n6");//合同Id
             map.put("mobile", "textField_lwzqvg93");//授权人手机号
             map.put("categoryName", "textField_lwa29saw");//业务分类名称
@@ -260,6 +315,8 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("tenantName", "textField_lvz1kozf");//公司名称
             map.put("categoryId", "textField_lvm5xmqe");//业务分类Id
             map.put("categoryName", "textField_lvz1kozg");//业务分类名称
+            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
             map.put("contact", "textField_lu991xih");//续签人手机号码
             map.put("jf", "textField_lvz1kozf");//公司主体名称
             map.put("sfzh", "textField_lu991xig");//续签人身份证号码
@@ -270,6 +327,18 @@ public class RsQysServiceImpl implements RsQysService {
             map.put("xdqxjzsj", "dateField_lu991xin");//续订期限结束时间
             map.put("zfjjbcjrq", "dateField_lzl3nrxf");//续订期限结束时间
             map.put("jjbcj", "numberField_lzl3nrxg");//续订期限结束时间
+        } else if (type.equals("FORM-4C410326630D4B498A1410EFBBEFE8EAORL5")) {
+            //HZ04-合作校区警示/解约函
+            map.put("subject", "textField_m0yoek7p");//合同名称
+            map.put("sn", "serialNumberField_m0yoek7q");//合同编号
+            map.put("tenantName", "textField_m0z328xq");//公司名称
+            map.put("glbd", "associationFormField_m0yx25he");//物理印章关联表单
+            map.put("count", "numberField_m0yx25hf");//盖章次数
+//            map.put("categoryName", "textField_lvz1kozg");//业务分类名称
+//            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+//            map.put("creatorName", "textField_lzpdjzfp");//创建人名称
+//            map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
+
         } else {
             throw new Exception();
         }
@@ -294,11 +363,12 @@ public class RsQysServiceImpl implements RsQysService {
         if (!type.equals("FORM-FD73905FB9C24E3A99244F901D9C98AFH4E6")) {
             documentId = createbyfile(data, type);
         }
-
         //定义参数  创建合同草稿
         JSONObject obj = new JSONObject();
 //        obj.put("subject",data.get("textField_ltsbwef0"));//合同名称
         obj.put("subject", data.get(getCust(type, "subject")).toString());//合同名称
+        obj.put("creatorName", data.get(getCust(type, "creatorName")).toString());//发起人姓名
+        obj.put("creatorContact", data.get(getCust(type, "creatorContact")).toString());//发起人联系方式
 //        obj.put("sn",data.get("serialNumberField_ltsbweh2"));//合同编号流水号
         obj.put("sn", data.get(getCust(type, "sn")));//合同编号流水号
         obj.put("tenantName", data.get(getCust(type, "tenantName")));//发起方公司名称
@@ -323,15 +393,15 @@ public class RsQysServiceImpl implements RsQysService {
 
         if (categoryName.equals("多方电子用印(个人)(我方先签)") ||
                 categoryName.equals("我方电子对方物理(个人)(我方先签)")) {
-            array.add(getCompASignatory());
+            array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
             array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
         } else if (categoryName.equals("我方电子对方物理(企业)(我方先签)") ||
                 categoryName.equals("多方电子用印(企业)(我方先签)")) {
-            array.add(getCompASignatory());
+            array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
             array.add(getCompSignatory(data.get(getCust(type, "tenantNameA")).toString(), data.get(getCust(type, "contactA")).toString(), data.get(getCust(type, "receiverNameA")).toString()));
         } else if (categoryName.equals("我方电子对方物理(企业&个人)(我方先签)") ||
                 categoryName.equals("多方电子用印(企业&个人)(我方先签)")) {
-            array.add(getCompASignatory());
+            array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
             array.add(getCompSignatory(data.get(getCust(type, "tenantNameA")).toString(), data.get(getCust(type, "contactA")).toString(), data.get(getCust(type, "receiverNameA")).toString()));
             array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
         } else if (categoryName.equals("我方电子对方物理(个人)") ||
@@ -347,19 +417,19 @@ public class RsQysServiceImpl implements RsQysService {
                 categoryName.equals("解除劳动合同")
         ) {
             array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
-            array.add(getCompASignatory());
+            array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
         } else if (categoryName.equals("我方电子对方物理(企业)") ||
                 categoryName.equals("多方电子用印(企业)(对方先签)")) {
             array.add(getCompSignatory(data.get(getCust(type, "tenantNameA")).toString(), data.get(getCust(type, "contactA")).toString(), data.get(getCust(type, "receiverNameA")).toString()));
-            array.add(getCompASignatory());
+            array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
         } else if (categoryName.equals("我方电子对方物理(企业&个人)") ||
                 categoryName.equals("多方电子用印(企业&个人)(对方先签)")) {
             array.add(getCompSignatory(data.get(getCust(type, "tenantNameA")).toString(), data.get(getCust(type, "contactA")).toString(), data.get(getCust(type, "receiverNameA")).toString()));
             array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
-            array.add(getCompASignatory());
+            array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
         } else if (categoryName.equals("内部企业单签") ||
                 categoryName.equals("默认业务分类")) {
-            array.add(getCompASignatory());
+            array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
         } else if (categoryName.equals("印章保管授权&承诺书")) {
             array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
             array.add(getPeopSignatory(data.get(getCust(type, "tenantNameA")).toString(), data.get(getCust(type, "contactA")).toString()));
@@ -380,7 +450,6 @@ public class RsQysServiceImpl implements RsQysService {
                                     .build(),
                             YDConf.FORM_QUERY.retrieve_id
                     ).getFormData();
-
                     if (sealdata1 != null) {
                         String sealName1 = (String) sealdata1.get("textField_lw6aecve");
                         if (sealName1 != null) {
@@ -411,7 +480,7 @@ public class RsQysServiceImpl implements RsQysService {
         try {
             if (categoryName.equals("物理用印外带场景") ||
                     categoryName.equals("物理用印公司用印场景")) {
-                qysService.createseal(obj);
+//                qysService.createseal(obj);
             } else {
                 //1.调用创建合同草稿方法
                 JSONObject draft = qysService.createDraft(obj);
@@ -421,6 +490,7 @@ public class RsQysServiceImpl implements RsQysService {
                     if (contractId != "") {
                         //发起合同
                         System.out.println("contractId" + contractId);
+//                        JSONObject senddata = qysService.send(contractId, data.get(getCust(type, "tenantName")).toString());
 //                    //合同id 写入宜搭
                         String sc = getCust(type, "sn");//合同id字段
                         String sc_values = data.get(getCust(type, "sn")).toString();//合同id字段的值
@@ -429,10 +499,11 @@ public class RsQysServiceImpl implements RsQysService {
                                 .formUuid(type)
                                 .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, sc_values)))
                                 .formDataJson(JSONObject.toJSONString(UtilMap.map(fd, contractId)))
-                                .build(), YDConf.FORM_OPERATION.upsert).toString();
-                        qysService.send(contractId, data.get(getCust(type, "tenantName")).toString());
-//                  FileUtil.file("C:\\Users\\Administrator\\Desktop\\合同.pdf");
-//                        System.out.println("send:" + send);
+                                .build(), YDConf.FORM_OPERATION.upsert);
+                        JSONObject senddata = qysService.send(contractId, data.get(getCust(type, "tenantName")).toString());
+//
+                      //                  FileUtil.file("C:\\Users\\Administrator\\Desktop\\合同.pdf");
+                        System.out.println("senddata:" + senddata);
                     }
                 }
             }
@@ -449,7 +520,73 @@ public class RsQysServiceImpl implements RsQysService {
         String status = param.get("status");
         log.info("sn:{}", sn);
         log.info("contractId:{}", contractId);
+        //查询宜搭底表数据
+        String[] sns = sn.split("-");
+        dingshiqiImpl dingshiqi = new dingshiqiImpl();
+        Map<String, String> formUuid = getFormUuid(sns[0]);
+        List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder().formUuid(formUuid.get("type")).searchCondition(
+                JSONObject.toJSONString(UtilMap.map(formUuid.get("sn"), sn))
+        ).build(), YDConf.FORM_QUERY.retrieve_list).getData();
+        Map maplist = list1.get(0);
+        String instanceId = (String) maplist.get("formInstanceId");
+        Map data = (Map) ydClient.queryData(YDParam.builder().formInstId(instanceId)
+                .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+                .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+        log.info("data:{}", data);
+        log.info("list1:{}", list1);
+        String categoryName = data.get(getCust(formUuid.get("type"), "categoryName")).toString();
         List list = new ArrayList();
+        if (categoryName.equals("我方电子对方物理(个人)") || categoryName.equals("我方电子对方物理(个人)(我方先签)")
+                || categoryName.equals("我方电子对方物理(企业&个人)") || categoryName.equals("我方电子对方物理(企业&个人)(我方先签)")
+        || categoryName.equals("我方电子对方物理(企业)") || categoryName.equals("我方电子对方物理(企业)(我方先签)")) {
+            qysService.download(contractId, new File(BDURL + sn + ".zip"));
+            List<String> unzippedFiles = new ArrayList<>();
+            String zipFilePath = BDURL + sn + ".zip";
+            String destDirectory = PDFBDURL + sn;
+            try {
+                File destDir = new File(destDirectory);
+                if (!destDir.exists()) {
+                    destDir.mkdir();
+                }
+                byte[] buffer = new byte[1024];
+                ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
+                ZipEntry entry = zipIn.getNextEntry();
+                while (entry != null) {
+                    String filePath = destDirectory + File.separator + entry.getName();
+                    if (!entry.isDirectory()) {
+                        new File(filePath).getParentFile().mkdirs();
+                        FileOutputStream fos = new FileOutputStream(filePath);
+                        int len;
+                        while ((len = zipIn.read(buffer)) > 0) {
+                            fos.write(buffer, 0, len);
+                        }
+                        fos.close();
+                        unzippedFiles.add(filePath);
+                    }
+                    zipIn.closeEntry();
+                    entry = zipIn.getNextEntry();
+                }
+                zipIn.close();
+                System.out.println("ZIP 文件解压完成。");
+            } catch (Exception e) {
+                System.out.println("发生异常: " + e.getMessage());
+                e.printStackTrace();
+            }
+            for (String unzippedFile : unzippedFiles) {
+                Map map = new HashMap();
+                String fileName = FileUtil.getName(unzippedFile);
+                if (fileName.contains("签署摘要")) {
+                    continue; // 跳过这个文件
+                }
+                map.put("downloadUrl", URL + sn + "/" + fileName);
+                map.put("name", fileName);
+                map.put("previewUrl", map.get("downloadUrl"));
+                map.put("url", map.get("downloadUrl"));
+                map.put("ext", FileUtil.extName(unzippedFile));
+                list.add(map);
+            }
+            log.info("list:{}", list);
+        }
         if (status.equals("COMPLETE") || status.equals("SIGNED") || status.equals("FINISHED")) {
             qysService.download(contractId, new File(BDURL + sn + ".zip"));
             List<String> unzippedFiles = new ArrayList<>();
@@ -484,11 +621,12 @@ public class RsQysServiceImpl implements RsQysService {
                 System.out.println("发生异常: " + e.getMessage());
                 e.printStackTrace();
             }
-
-
             for (String unzippedFile : unzippedFiles) {
                 Map map = new HashMap();
                 String fileName = FileUtil.getName(unzippedFile);
+                if (fileName.contains("签署摘要")) {
+                    continue; // 跳过这个文件
+                }
                 map.put("downloadUrl", URL + sn + "/" + fileName);
                 map.put("name", fileName);
                 map.put("previewUrl", map.get("downloadUrl"));
@@ -498,15 +636,7 @@ public class RsQysServiceImpl implements RsQysService {
             }
             log.info("list:{}", list);
         }
-        //查询宜搭底表数据
-        String[] sns = sn.split("-");
-        dingshiqiImpl dingshiqi = new dingshiqiImpl();
-        Map<String, String> formUuid = getFormUuid(sns[0]);
-        List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder().formUuid(formUuid.get("type")).searchCondition(
-                JSONObject.toJSONString(UtilMap.map(formUuid.get("sn"), sn))
-        ).build(), YDConf.FORM_QUERY.retrieve_list).getData();
-        Map map = list1.get(0);
-        String instanceId = (String) map.get("formInstanceId");
+
         Map param2 = new HashMap();
         param2.put("x-acs-dingtalk-access-token", dingshiqi.getAccessToken_PJSS());
         Map body3 = new HashMap();
@@ -515,28 +645,33 @@ public class RsQysServiceImpl implements RsQysService {
         body3.put("processInstanceId", instanceId);
         body3.put("userId", "13810479803");
         boolean flag = true;
-        do {
+        String taskId = "";
             String s = UtilHttp.doGet("https://api.dingtalk.com/v1.0/yida/processes/operationRecords", param2, (Map<String, Object>) body3);
             JSONObject obj = JSONObject.parseObject(s);
             JSONArray arr = obj.getJSONArray("result");
             for (int i = 0; i < arr.size(); i++) {
                 JSONObject json = arr.getJSONObject(i);
                 flag = false;
+                if (json.getString("operatorUserId").equals("13810479803") ){
+                    taskId = json.getString("taskId");
+                }
                 if (json.getString("operatorUserId").equals("13810479803") && json.getString("type").equals("TODO")) {
-            try {
-                taskExecute(instanceId, json.getString("taskId"));
-            }catch (McException e){
-                log.error("taskExecute:{}",e.getMessage());
-                ydClient.operateData(YDParam.builder()
-                                .formUuid("FORM-F7B0E685C56E41FC939A581F8B7C2665PXPV")
-                                .formDataJson(JSONObject.toJSONString(UtilMap.map("textField_lzns5l3l, textField_lzns5l3k, textField_lzns5l3m", sn, instanceId, json.getString("taskId"))))
-                        .build(), YDConf.FORM_OPERATION.create);
-            }
+                    taskId = json.getString("taskId");
                     flag = true;
                     break;
                 }
+
             }
-        } while (flag);
+        if (flag){
+            taskExecute(instanceId, taskId);
+            System.out.println("taskId");
+        }else {
+
+            ydClient.operateData(YDParam.builder()
+                    .formUuid("FORM-F7B0E685C56E41FC939A581F8B7C2665PXPV")
+                    .formDataJson(JSONObject.toJSONString(UtilMap.map("textField_lzns5l3l, textField_lzns5l3k, textField_lzns5l3m", sn, instanceId, taskId)))
+                    .build(), YDConf.FORM_OPERATION.create);
+        }
         if(list.size() > 0){
             ydClient.operateData(YDParam.builder()
                     .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
@@ -612,7 +747,6 @@ public class RsQysServiceImpl implements RsQysService {
         ArrayList<Object> objects1 = new ArrayList<>();
         for (Map sealjsonmap : sealjsonlist) {
             JSONObject auths = new JSONObject();
-
             String sealInstanceId = (String) sealjsonmap.get("instanceId");
             Map sealdata1 = (Map) ydClient.queryData(YDParam.builder().formInstId(sealInstanceId)
                     .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
@@ -643,7 +777,6 @@ public class RsQysServiceImpl implements RsQysService {
             String jsonData = String.valueOf(sealAuthsArray);
             // 解析JSON数据
             ArrayNode arrayNode = (ArrayNode) mapper.readTree(jsonData);
-
             // 处理每个对象
             List<Map<String, Object>> resultList = new ArrayList<>();
             for (JsonNode node : arrayNode) {
@@ -718,6 +851,8 @@ public class RsQysServiceImpl implements RsQysService {
         JSONObject obj = new JSONObject();
 //        obj.put("subject",data.get("textField_ltsbwef0"));//合同名称
         obj.put("subject", data.get(getCust(type, "subject")).toString());//合同名称
+        obj.put("creatorName", data.get(getCust(type, "creatorName")).toString());//发起人姓名
+        obj.put("creatorContact", data.get(getCust(type, "creatorContact")).toString());//发起人联系方式
 //        obj.put("sn",data.get("serialNumberField_ltsbweh2"));//合同编号流水号
         obj.put("sn", data.get(getCust(type, "sn")));//合同编号流水号
         obj.put("tenantName", data.get(getCust(type, "tenantName")));//发起方公司名称
@@ -836,20 +971,19 @@ public class RsQysServiceImpl implements RsQysService {
         if (categoryName.equals("劳动合同") || categoryName.equals("校区劳动合同")
         ) {
             array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
-            array.add(getCompASignatory());
+            array.add(getCompASignatory1());
             obj.put("documentParams", params1);
             obj.put("signatories", array);
             obj.put("send", true);
         } else {
             array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
-            array.add(getCompASignatory());
+            array.add(getCompASignatory1());
             obj.put("documentParams", params2);
             obj.put("signatories", array);
             obj.put("send", true);
         }
         JSONObject draft = qysService.createDraft(obj);
         System.out.println(draft);
-        System.out.println(draft);
         if (draft != null) {
             String contractId = draft.getString("contractId");
             if (contractId != "") {
@@ -1045,25 +1179,25 @@ public class RsQysServiceImpl implements RsQysService {
         JSONArray array = new JSONArray();
         if (categoryName.equals("续签(固定几年)")) {
             array.add(getPeopSignatory(data.get(getCust(type, "xm")).toString(), data.get(getCust(type, "contact")).toString()));
-            array.add(getCompASignatory());
+            array.add(getCompASignatory1());
             obj.put("documentParams", params1);
             obj.put("signatories", array);
             obj.put("send", true);
         } else if (categoryName.equals("续签(无固定期限)")) {
             array.add(getPeopSignatory(data.get(getCust(type, "xm")).toString(), data.get(getCust(type, "contact")).toString()));
-            array.add(getCompASignatory());
+            array.add(getCompASignatory1());
             obj.put("documentParams", params2);
             obj.put("signatories", array);
             obj.put("send", true);
         } else if (categoryName.equals("续签(员工合同到期公司不再与员工续签)")) {
             array.add(getPeopSignatory(data.get(getCust(type, "xm")).toString(), data.get(getCust(type, "contact")).toString()));
-            array.add(getCompASignatory());
+            array.add(getCompASignatory1());
             obj.put("documentParams", params3);
             obj.put("signatories", array);
             obj.put("send", true);
         } else {
             array.add(getPeopSignatory(data.get(getCust(type, "xm")).toString(), data.get(getCust(type, "contact")).toString()));
-            array.add(getCompASignatory());
+            array.add(getCompASignatory1());
             obj.put("documentParams", params4);
             obj.put("signatories", array);
             obj.put("send", true);
@@ -1090,7 +1224,7 @@ public class RsQysServiceImpl implements RsQysService {
         return McR.success("success");
     }
 
-    // TODO zid
+
     @Override
     public String callback1(Map<String, String> param) throws Exception {
         dingshiqiImpl dingshiqi = new dingshiqiImpl();
@@ -1128,6 +1262,54 @@ public class RsQysServiceImpl implements RsQysService {
         return "success";
     }
 
+    @Override
+    public McR viewurl(String contractId, String pageType) throws Exception {
+        try {
+            log.info("获取合同浏览页面 {},{}", contractId,pageType);
+            JSONObject urlR = qysService.viewurl(contractId,pageType);
+            String viewUrl = urlR.getString("viewUrl");
+            if (!QYS_SUCCESS_CODE.equals(urlR.getString("code"))) {
+                return McR.error(urlR.getString("code"), urlR.getString("message"));
+            } else {
+                return McR.success(viewUrl);
+            }
+        } catch (Exception e) {
+            return McR.error("401", "获取失败");
+        }
+    }
+
+    @Override
+    public McR audit(String contractId) throws Exception {
+        try {
+            log.info("合同审批 {}", contractId);
+            JSONObject urlR = qysService.audit(contractId);
+            String viewUrl = urlR.getString("viewUrl");
+            if (!QYS_SUCCESS_CODE.equals(urlR.getString("code"))) {
+                return McR.error(urlR.getString("code"), urlR.getString("message"));
+            } else {
+                return McR.success(viewUrl);
+            }
+        } catch (Exception e) {
+            return McR.error("401", "获取失败");
+        }
+    }
+
+//    @Override
+//    public McR appointurldownload(String contractId) throws Exception {
+//        try {
+//            log.info("获取预签署地址 {}", contractId);
+//            JSONObject urlR = qysService.appointurldownload(contractId);
+//            String presignUrl = urlR.getString("presignUrl");
+//            if (!QYS_SUCCESS_CODE.equals(urlR.getString("code"))) {
+//                return McR.error(urlR.getString("code"), urlR.getString("message"));
+//            } else {
+//                return McR.success(presignUrl);
+//            }
+//        } catch (Exception e) {
+//            return McR.error("401", "获取失败");
+//        }
+//    }
+
     private Map<String, String> getFormUuid(String type) {
         Map<String, String> map = UtilMap.empty();
         switch (type) {
@@ -1136,6 +1318,11 @@ public class RsQysServiceImpl implements RsQysService {
                 map.put("sn", "serialNumberField_ltsbweh2");
                 map.put("contractId", "textField_lwah8x72");
                 break;
+            case "CG11"://框架采购
+                map.put("type", "FORM-82E566F8576E44D3AB4B34033A27E76FEB75");
+                map.put("sn", "serialNumberField_ltsbweh2");
+                map.put("contractId", "textField_lwah8x72");
+                break;
             case "HT02"://框架
                 map.put("type", "FORM-5DB656AF0F0E4EFA85A4739D55C23ED85BXO");
                 map.put("sn", "serialNumberField_lvz8coae");
@@ -1155,7 +1342,7 @@ public class RsQysServiceImpl implements RsQysService {
                 map.put("sn", "serialNumberField_lu7ycpuc");
                 map.put("contractId", "textField_lwg219kl");
                 break;
-            case "HR03"://hr用印
+            case "HR09"://hr用印
                 map.put("type", "FORM-54972289A0B7416287A9BA44DA6CCDC50QUC");
                 map.put("sn", "serialNumberField_lu9euh7o");
                 break;
@@ -1228,12 +1415,23 @@ public class RsQysServiceImpl implements RsQysService {
      * @param
      * @return
      */
-    private Map getCompASignatory() {
+    private Map getCompASignatory(String sealId) {
+        JSONObject signatory = new JSONObject();
+        ArrayList<Object> actions = new ArrayList<>();
+        Map sss = new HashMap<>();
+        sss.put("sealId", sealId);
+        sss.put("type", "CORPORATE");
+        sss.put("serialNo", 1);
+        actions.add(sss);
+        signatory.put("tenantType", "COMPANY");
+        signatory.put("actions", actions);
+        return signatory;
+    }
+    private Map getCompASignatory1() {
         JSONObject signatory = new JSONObject();
         signatory.put("tenantType", "COMPANY");
         return signatory;
     }
-
     /***
      * 获取个人签署对象
      * @param name
@@ -1250,8 +1448,51 @@ public class RsQysServiceImpl implements RsQysService {
     //根据附件创建合同文档得到文档Id
     public List<String> createbyfile(Map data, String type) throws Exception {
 //        String jsonString = data.get("attachmentField_ltsbweir").toString();
-        String jsonString = data.get(getCust(type, "fujian")).toString();
-        JSONArray jsonArray = JSONObject.parseArray(jsonString);
+        String formuuid ="FORM-B27C1AE7298648F29E836B5FDF469DBDPFCK";//其他用印
+        String hrformuuid ="FORM-54972289A0B7416287A9BA44DA6CCDC50QUC";//hr09
+        String htformuuid ="FORM-55D56A69CCCE4043A01660C8910E33BAQ4N0";//合同用印
+        String kjformuuid ="FORM-54972289A0B7416287A9BA44DA6CCDC50QUC";//框架用印
+        String jsonString = "";
+
+// 根据categoryName的值来决定从data中获取哪个键对应的值
+        //其他用印处理附件选择问题
+        if (type.equals(formuuid)) {
+            String categoryName = String.valueOf(data.get(getCust(formuuid, "categoryName")));
+//            String ghl = data.get("selectField_ltwktalx") != null ? data.get("selectField_ltwktalx").toString() : "";
+            if ("物理用印外带场景".equals(categoryName) || "物理用印公司用印场景".equals(categoryName) ) {
+                jsonString = data.get(getCust(type, "fujian1")) != null ? data.get(getCust(type, "fujian1")).toString() : "";
+            } else {
+                jsonString = data.get(getCust(type, "fujian")) != null ? data.get(getCust(type, "fujian")).toString() : "";
+            }
+        } else if (type.equals(hrformuuid)) {
+            String categoryName = String.valueOf(data.get(getCust(hrformuuid, "categoryName")));
+            String sfbh = data.get("selectField_lu9euh7u") != null ? data.get("selectField_lu9euh7u").toString() : "";
+            if ("内部企业单签".equals(categoryName) && "是".equals(sfbh)) {
+                jsonString = data.get(getCust(type, "fujian")) != null ? data.get(getCust(type, "fujian")).toString() : "";
+            } else {
+                jsonString = data.get(getCust(type, "fujian1")) != null ? data.get(getCust(type, "fujian1")).toString() : "";
+            }
+        } else if (type.equals(htformuuid)) {
+//            String categoryName = String.valueOf(data.get(getCust(htformuuid, "categoryName")));
+            String yycj = data.get("selectField_ltsbwei5") != null ? data.get("selectField_ltsbwei5").toString() : "";
+            if ("我方电子对方物理用印".equals(yycj)) {
+                jsonString = data.get(getCust(type, "fujian1")) != null ? data.get(getCust(type, "fujian1")).toString() : "";
+            } else {
+                jsonString = data.get(getCust(type, "fujian")) != null ? data.get(getCust(type, "fujian")).toString() : "";
+            }
+        } else if (type.equals(kjformuuid)) {
+//            String categoryName = String.valueOf(data.get(getCust(htformuuid, "categoryName")));
+            String yycj = data.get("selectField_lvz8cob7") != null ? data.get("selectField_lvz8cob7").toString() : "";
+            if ("我方电子对方物理用印".equals(yycj)) {
+                jsonString = data.get(getCust(type, "fujian1")) != null ? data.get(getCust(type, "fujian1")).toString() : "";
+            } else {
+                jsonString = data.get(getCust(type, "fujian")) != null ? data.get(getCust(type, "fujian")).toString() : "";
+            }
+        } else {
+            jsonString = data.get(getCust(type, "fujian")) != null ? data.get(getCust(type, "fujian")).toString() : "";
+
+        }
+            JSONArray jsonArray = JSONObject.parseArray(jsonString);
         List<String> resultList = new ArrayList<>();
         if (jsonArray != null) {
             for (int i = 0; i < jsonArray.size(); i++) {

+ 308 - 169
mjava-ruisi/src/main/java/com/malk/ruisi/service/impl/dingshiqiImpl.java

@@ -1,11 +1,13 @@
 package com.malk.ruisi.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
+import com.malk.ruisi.server.YDParam_T;
 import com.malk.ruisi.service.QysApiService;
 import com.malk.ruisi.service.QysService;
 import com.malk.ruisi.service.dingshiqi;
@@ -15,20 +17,24 @@ import com.malk.server.common.McException;
 import com.malk.server.dingtalk.DDR;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
+import com.malk.service.aliwork.YDService;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Contacts;
+import com.malk.utils.UtilDateTime;
 import com.malk.utils.UtilHttp;
 import com.malk.utils.UtilMap;
 import com.malk.utils.UtilToken;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.util.*;
 
 import static com.malk.ruisi.constant.QysConstant.*;
 
@@ -65,12 +71,72 @@ public class dingshiqiImpl implements dingshiqi {
                         && ids.getJSONObject(i).getString("tenantName") != "" && ids.getJSONObject(i).getString("tenantId") != ""
                         && ids.getJSONObject(i).getString("config") != "") {
                     String name = ids.getJSONObject(i).getString("name");//业务分类名称
+                    String yycj = "";
+                    String wbdwlx = "";
+                    if(name.equals("我方电子对方物理(企业)")){
+                        yycj = "我方电子对方物理用印";
+                        wbdwlx = "企业";
+                    }else if (name.equals("我方电子对方物理(个人)")){
+                        yycj = "我方电子对方物理用印";
+                        wbdwlx = "个人";
+                    }else if (name.equals("我方电子对方物理(企业&个人)")){
+                        yycj = "我方电子对方物理用印";
+                        wbdwlx = "企业&个人";
+                    }else if (name.equals("多方电子用印(个人)(我方先签)")){
+                        yycj = "多方-电子用印";
+                        wbdwlx = "个人";
+                    }else if (name.equals("多方电子用印(企业)(我方先签)")){
+                        yycj = "多方-电子用印";
+                        wbdwlx = "企业";
+                    }else if (name.equals("多方电子用印(企业&个人)(我方先签)")){
+                        yycj = "多方-电子用印";
+                        wbdwlx = "企业&个人";
+                    }else if (name.equals("我方电子对方物理(企业)(我方先签)")){
+                        yycj = "我方电子对方物理用印";
+                        wbdwlx = "企业";
+                    }else if (name.equals("我方电子对方物理(个人)(我方先签)")){
+                        yycj = "我方电子对方物理用印";
+                        wbdwlx = "个人";
+                    }else if (name.equals("我方电子对方物理(企业&个人)(我方先签)")){
+                        yycj = "我方电子对方物理用印";
+                        wbdwlx= "企业&个人";
+                    }else if (name.equals("多方电子用印(个人)(对方先签)")){
+                        yycj = "多方-电子用印";
+                        wbdwlx = "个人";
+                    }else if (name.equals("多方电子用印(企业)(对方先签)")){
+                        yycj = "多方-电子用印";
+                        wbdwlx = "企业";
+                    }else if (name.equals("多方电子用印(企业&个人)(对方先签)")){
+                        yycj = "多方-电子用印";
+                        wbdwlx = "企业&个人";
+                    }else if (name.equals("续签(固定几年)") || name.equals("续签(无固定期限)") ||
+                            name.equals("续签(员工合同到期公司不再与员工续签)") || name.equals("续签(员工合同到期员工本人不愿意与公司续签时签订)")){
+                        yycj = "续签";
+                        wbdwlx = "";
+                    }else if (name.equals("内部企业单签")){
+                        yycj = "单方-电子用印";
+                        wbdwlx = "";
+                    }else if (name.equals("物理用印公司用印场景")){
+                        yycj = "物理用印-内部使用";
+                        wbdwlx = "企业";
+                    }else if (name.equals("物理用印外带场景")){
+                        yycj = "物理用印-外带";
+                        wbdwlx = "企业";
+                    }else if (name.equals("劳动合同") || name.equals("校区劳动合同") ||
+                            name.equals("劳务协议") || name.equals("校区劳务协议")){
+                        yycj = "新签劳动合同";
+                        wbdwlx = "";
+                    }
+                    else{
+                        yycj = "";
+                        wbdwlx = "";
+                    }
                     String id = ids.getJSONObject(i).getString("id");//业务分类id
                     String config = ids.getJSONObject(i).getString("config");
                     String tenantName = ids.getJSONObject(i).getString("tenantName");//公司名称
                     String tenantID = ids.getJSONObject(i).getString("tenantId");//公司id
                     String sc = "textField_lvkbxugq, textField_lvkbxugr, textField_lvyy8a3l";
-                    String fd = "textField_lvkbxugq, textField_lvkbxugr, textField_lvyy8a3l, textField_lvyy8a3m, textareaField_lw1py1td";
+                    String fd = "textField_lvkbxugq, textField_lvkbxugr, textField_lvyy8a3l, textField_lvyy8a3m, textareaField_lw1py1td, textField_lvkbxugo, textField_lvkbxugp";
                     //把配置数据转换成json
                     Gson gson = new Gson();
                     JsonObject jsonObject = gson.fromJson(config, JsonObject.class);
@@ -108,11 +174,15 @@ public class dingshiqiImpl implements dingshiqi {
                     //把配置数据转换成json
                     Gson gson1 = new Gson();
                     scon = gson1.toJson(signatoriesData);
+                    Map mapForm = UtilMap.map(fd, name, id, tenantName, tenantID, scon, yycj, wbdwlx);
+
+                    mapForm.put("radioField_lznyvvav","启用");//状态
+                    mapForm.put("dateField_lznyvvaw",new Date().getTime());//同步时间
                     //把数据插入宜搭基础表单中
                     String tquid = ydClient.operateData(YDParam.builder()
                             .formUuid("FORM-417576F4EE9F4AA1B2395BCD93B7A08C8ASN")
                             .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, name, id, tenantName)))
-                            .formDataJson(JSONObject.toJSONString(UtilMap.map(fd, name, id, tenantName, tenantID, scon)))
+                            .formDataJson(JSONObject.toJSONString(mapForm))
                             .build(), YDConf.FORM_OPERATION.upsert).toString();
                     System.out.println("tquid:" + tquid);
                 }
@@ -139,92 +209,93 @@ public class dingshiqiImpl implements dingshiqi {
     }
     @Override
     public JSONObject getYWFLid1() throws Exception {
-        Map<String, Object> data = new HashMap();
-        data.put("category", "PHYSICS");
-        JSONObject qysid = qysApiService.sendGet(data, QYS_API_SEALLIST, false);
-        JSONArray result = qysid.getJSONArray("result");//得到物理印章所有数据
-        if (result != null && result.size() > 0) {
-            for (int i = 0; i < result.size(); i++) {
-                JSONObject sealData = result.getJSONObject(i);
-                String charger = sealData.getString("charger"); // 印章负责人
-                String name = sealData.getString("name"); // 公司名称
-                String id = sealData.getString("id"); // 公司id
-                JSONArray seals = sealData.getJSONArray("seals"); // 公司id
-                String sc = "textField_lw6aecvd, textField_lw6aecvg, textField_lw6aecve, textField_lw6aecvh";
-                String fd = "employeeField_lwr509pq, textField_lw6aecvd, textField_lw6aecvg, textField_lw6aecve, textField_lw6aecvh, textField_lwywohh0";
-                String fd1 = "textField_lw6aecvd, textField_lw6aecvg, textField_lw6aecve, textField_lw6aecvh";
-
-                // 如果 seals 为空,则设置 id、name、category 为空字符串
-                if (seals != null && seals.size() > 0) {
-                    for (int i1 = 0; i1 < seals.size(); i1++) {
-                        JSONObject seal = seals.getJSONObject(i1);
-                        String sealId = seal.getString("id"); // 印章id
-                        String sealName = seal.getString("name"); // 印章名称
-//                        String sealCategory = seal.getString("category"); // 印章类别
-//                        if (sealCategory.equals("PHYSICS")) {
-//                            sealCategory = "物理";
-//                        }
-                        Map<String, Object> data5 = new HashMap();
-                        data5.put("sealId", sealId);
-                        JSONObject detail = qysApiService.sendGet(data5, QYS_API_DETAIL, false);
-                        JSONObject seal3 = detail.getJSONObject("seal");//得到电子印章所有数据
-                        JSONArray users = seal3.getJSONArray("users");//得到电子印章所有数据
-
-                        if (users != null && users.size() > 0) {
-                            List<String> usersList = new ArrayList<>();
-                            for (int k = 0; k < users.size(); k++) {
-                                JSONObject usersData = users.getJSONObject(k);
-
-                                String mobile = usersData.getString("mobile");
-                                try {
-                                    Map userInfoByMobile = ddClient_contacts.getUserInfoByMobile(ddClient.getAccessToken(), mobile);
-                                    String userid = UtilMap.getString(userInfoByMobile, "userid");
-                                    if (userid != null) {
-                                        log.info("userInfoByMobile:{}", userInfoByMobile.get("userid"));
-                                        usersList.add(userid);
-                                    } else {
-                                        usersList.add(null);
-                                    }
-                                } catch (McException e) {
-                                    if (e.getCode() == "60121") {
-                                        // 处理用户不存在的特定情况,如记录日志、添加特定消息等
-                                        log.warn("用户不存在: 手机号={}", mobile);
-                                    } else {
-                                        // 其他错误处理
-                                        log.error("获取用户信息时发生错误", e);
-                                    }
-                                }
-                                System.out.println("物理印章使用人----------------" + usersList);
-                                System.out.println("物理印章使用人----------------" + ddClient.getAccessToken());
-                                System.out.println("物理印章使用人----------------" + mobile);
-                                if (usersList != null){
-                                    ydClient.operateData(YDParam.builder()
-                                            .formUuid("FORM-7ACCB70D96FA4187BD2042243641E54CD6VH")
-                                            .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, name, sealId, sealName, id)))
-                                            .formDataJson(JSONObject.toJSONString(UtilMap.map(fd, usersList, name, sealId, sealName, id, mobile)))
-                                            .build(), YDConf.FORM_OPERATION.upsert);
-                                }else{
-                                    ydClient.operateData(YDParam.builder()
-                                            .formUuid("FORM-7ACCB70D96FA4187BD2042243641E54CD6VH")
-                                            .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, name, sealId, sealName, id)))
-                                            .formDataJson(JSONObject.toJSONString(UtilMap.map(fd1, name, sealId, sealName, id)))
-                                            .build(), YDConf.FORM_OPERATION.upsert);
-                                }
-
-                            }
-                        }
-
+        List<Map> LegaltList = new ArrayList<>();
+        String sql = "select  *  from  V_SEAL_COM_USER where  miaosu ='物理' order by yzmc desc";
+        String jdbcUrl = "jdbc:mysql://10.9.33.236/qiyuesuodb?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC";
+        String userName = "root";
+        String password = "hpZbPf6YnVr7";
+        try{
+            Class.forName("com.mysql.cj.jdbc.Driver");
+            Connection conn = DriverManager.getConnection(jdbcUrl, userName, password);
+            Statement statement = conn.createStatement();
+            ResultSet resultSet = statement.executeQuery(sql);
+            int i5=0;
+            while (resultSet.next()){
+                i5++;
+                System.out.println(i5+"-"+resultSet.getFetchSize());
+                String yzsysmz = resultSet.getString("yzsysmz");//编号
+                String yzsyzid1 = resultSet.getString("yzsyzid");//使用人id
+                String yzsyzid = "";
+               if(yzsyzid1!=null){
+                   yzsyzid = yzsyzid1.replace("\'", "")
+                           .replace("[", "")
+                           .replace("]", "");
+               }
+                String gszt = resultSet.getString("gszt");//公司名称
+                String sid = resultSet.getString("id");//印章名称
+                String yzmc = resultSet.getString("yzmc");//印章名称
+                HashMap<String, Object> bankmap = new HashMap<>();
+                bankmap.put("yzsysmz",yzsysmz);
+                bankmap.put("yzsyzid",yzsyzid);
+                bankmap.put("gszt",gszt);
+                bankmap.put("id",sid);
+                bankmap.put("yzmc",yzmc);
+                LegaltList.add(bankmap);
+            }
+            resultSet.close();
+            statement.close();
+            conn.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        if (LegaltList.size() > 0 && LegaltList != null) {
+            for (int i11 = 0; i11 < LegaltList.size(); i11++) {
+                Map sealDetail = LegaltList.get(i11);
+                ArrayList<Object> yzsyzid1 = new ArrayList<>();
+                try {
+                    String yzsysmz = String.valueOf(sealDetail.get("yzsysmz")); // 印章使用人名字
+                    String yzsyzid = String.valueOf(sealDetail.get("yzsyzid")); // 使用人id
+                    String mobile = "";
+                    if (StringUtils.isNotBlank(yzsyzid)) {
+                        String[] userIds = yzsyzid.split(",");
+                        String yzsyzid2 = userIds[0];
+                        Map userInfoByMobile1 = ddClient_contacts.getUserInfoById(ddClient.getAccessToken(), yzsyzid2);
+                        mobile = String.valueOf(userInfoByMobile1.get("mobile"));
                     }
-                } else {
-                    String sealId = ""; // 印章id
-                    String sealName = ""; // 印章名称
-                    String sealCategory = ""; // 印章类别
-
-                    ydClient.operateData(YDParam.builder()
-                            .formUuid("FORM-7ACCB70D96FA4187BD2042243641E54CD6VH")
-                            .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, name, sealId, sealName, id)))
-                            .formDataJson(JSONObject.toJSONString(UtilMap.map(fd1,  name, sealId, sealName, id)))
-                            .build(), YDConf.FORM_OPERATION.upsert).toString();
+                    String[] userIds = yzsyzid.split(",");
+                    String gszt = String.valueOf(sealDetail.get("gszt")); // 公司名称
+                    String id = String.valueOf(sealDetail.get("id")); // 印章id
+                    String yzmc = String.valueOf(sealDetail.get("yzmc")); // 印章名称
+                    yzsyzid1.add(yzsyzid);
+                    String sc = "textField_lw6aecvd, textField_lw6aecvg, textField_lw6aecve";
+                    String fd = "textField_lw6aecvd, textField_lw6aecvg, textField_lw6aecve";
+                    String fd1 = "textField_lw6aecvd, textField_lw6aecvg, textField_lw6aecve";
+                    if (yzsyzid1 != null) {
+                        Map mapForm = UtilMap.map(fd, gszt, id, yzmc);
+                        mapForm.put("employeeField_lwr509pq", userIds);
+                        mapForm.put("textField_lwywohh0", mobile);
+                        mapForm.put("radioField_lznyvvav", "启用"); // 状态
+                        mapForm.put("dateField_lznyvvaw", new Date().getTime()); // 同步时间
+                        ydClient.operateData(YDParam.builder()
+                                .formUuid("FORM-7ACCB70D96FA4187BD2042243641E54CD6VH")
+                                .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, gszt, id, yzmc)))
+                                .formDataJson(JSONObject.toJSONString(mapForm))
+                                .build(), YDConf.FORM_OPERATION.upsert);
+                    } else {
+                        Map mapForm1 = UtilMap.map(fd1, gszt, id, yzmc);
+                        mapForm1.put("radioField_lznyvvav", "启用"); // 状态
+                        mapForm1.put("dateField_lznyvvaw", new Date().getTime()); // 同步时间
+                        ydClient.operateData(YDParam.builder()
+                                .formUuid("FORM-7ACCB70D96FA4187BD2042243641E54CD6VH")
+                                .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, gszt, id, yzmc)))
+                                .formDataJson(JSONObject.toJSONString(mapForm1))
+                                .build(), YDConf.FORM_OPERATION.upsert);
+                    }
+                } catch (Exception e) {
+                    // 处理异常
+                    e.printStackTrace();
+                    // 可以在这里记录错误信息或者采取其他措施
+                    System.err.println("An error occurred while processing the data: " + e.getMessage());
                 }
             }
         }
@@ -233,87 +304,108 @@ public class dingshiqiImpl implements dingshiqi {
 
     @Override
     public JSONObject getYWFLid2() throws Exception {
-        Map<String, Object> data = new HashMap();
-        data.put("category", "ELECTRONIC");
-        JSONObject qysid = qysApiService.sendGet(data, QYS_API_SEALLIST, false);
-        JSONArray result = qysid.getJSONArray("result");//得到电子印章所有数据
-        if (result != null && result.size() > 0) {
-            for (int i = 0; i < result.size(); i++) {
-                JSONObject sealData = result.getJSONObject(i);
-                String charger = sealData.getString("charger"); // 印章负责人
-                String name = sealData.getString("name"); // 公司名称
-                String id = sealData.getString("id"); // 公司id
-                JSONArray seals = sealData.getJSONArray("seals"); // 印章id
-                String sc = "textField_lu0k70cf, textField_lw5pfnr9";
-                String fd = "employeeField_lwqbilgc, textField_lu0k70cf, textField_lw5pfnr9, textField_lu0k70cg, textField_lw5qtyzw, textField_lwywvrx9";
-                String fd1 = "textField_lu0k70cf, textField_lw5pfnr9, textField_lu0k70cg, textField_lw5qtyzw";
-                // 如果 seals 为空,则设置 id、name、category 为空字符串
-                if (seals != null && seals.size() > 0) {
-                    for (int i1 = 0; i1 < seals.size(); i1++) {
-                        JSONObject seal = seals.getJSONObject(i1);
-                        String sealId = seal.getString("id"); // 印章id
-                        String sealName = seal.getString("name"); // 印章名称
-//                        String sealCategory = seal.getString("category"); // 印章类别
-//                        if (sealCategory.equals("ELECTRONIC")) {
-//                            sealCategory = "电子";
-//                        }
-                        Map<String, Object> data5 = new HashMap();
-                        data5.put("sealId", sealId);
-                        JSONObject detail = qysApiService.sendGet(data5, QYS_API_DETAIL, false);
-                        JSONObject seal3 = detail.getJSONObject("seal");//得到电子印章所有数据
-                        JSONArray users = seal3.getJSONArray("users");//得到电子印章所有数据
-
-                        if (users != null && users.size() > 0) {
-                            List<String> usersList = new ArrayList<>();
-                            for (int k = 0; k < users.size(); k++) {
-                                JSONObject usersData = users.getJSONObject(k);
-//                                String name3 = usersData.getString("name");
-                                String mobile = usersData.getString("mobile");
-                                try {
-                                    Map userInfoByMobile = ddClient_contacts.getUserInfoByMobile(ddClient.getAccessToken(), mobile);
-                                    String userid = UtilMap.getString(userInfoByMobile, "userid");
-                                    if (userid != null) {
-                                        log.info("userInfoByMobile:{}", userInfoByMobile.get("userid"));
-                                        usersList.add(userid);
-                                    } else {
-                                        usersList.add(null);
-                                    }
-                                } catch (McException e) {
-                                    if (e.getCode() == "60121") {
-                                        // 处理用户不存在的特定情况,如记录日志、添加特定消息等
-                                        log.warn("用户不存在: 手机号={}", mobile);
-                                    } else {
-                                        // 其他错误处理
-                                        log.error("获取用户信息时发生错误", e);
-                                    }
-                                }
-                                System.out.println("印章使用人----------------" + mobile);
-                                if (usersList != null) {
-                                    ydClient.operateData(YDParam.builder()
-                                            .formUuid("FORM-6D5B2C469B45456F9287C3575BFF92C7KUF6")
-                                            .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, name, sealId)))
-                                            .formDataJson(JSONObject.toJSONString(UtilMap.map(fd, usersList, name, sealId, sealName, id, mobile)))
-                                            .build(), YDConf.FORM_OPERATION.upsert);
+        List<Map> LegaltList = new ArrayList<>();
+        String sql = "select  *  from  V_SEAL_COM_USER where  miaosu ='电子' order by gszt";
+        String jdbcUrl = "jdbc:mysql://10.9.33.236/qiyuesuodb?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC";
+        String userName = "root";
+        String password = "hpZbPf6YnVr7";
+        try{
+            Class.forName("com.mysql.cj.jdbc.Driver");
+            Connection conn = DriverManager.getConnection(jdbcUrl, userName, password);
+            Statement statement = conn.createStatement();
+            ResultSet resultSet = statement.executeQuery(sql);
+            int i5=0;
+            while (resultSet.next()){
+                i5++;
+                System.out.println(i5+"-"+resultSet.getFetchSize());
+                String yzsysmz = resultSet.getString("yzsysmz");//编号
+                String yzsyzid1 = resultSet.getString("yzsyzid");//使用人id
+                String yzsyzid = "";
+                if(yzsyzid1!=null){
+                    yzsyzid = yzsyzid1.replace("\'", "")
+                            .replace("[", "")
+                            .replace("]", "");
+                }
+                String gszt = resultSet.getString("gszt");//公司名称
+                String sid = resultSet.getString("id");//印章名称
+                String yzmc = resultSet.getString("yzmc");//印章名称
+                HashMap<String, Object> bankmap = new HashMap<>();
+                bankmap.put("yzsysmz",yzsysmz);
+                bankmap.put("yzsyzid",yzsyzid);
+                bankmap.put("gszt",gszt);
+                bankmap.put("id",sid);
+                bankmap.put("yzmc",yzmc);
+                LegaltList.add(bankmap);
+            }
+            resultSet.close();
+            statement.close();
+            conn.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        if (LegaltList.size() > 0 && LegaltList != null) {
+            for (int i11 = 0; i11 < LegaltList.size(); i11++) {
+                Map sealDetail = LegaltList.get(i11);
+                ArrayList<Object> yzsyzid1 = new ArrayList<>();
+                try {
+                    String yzsysmz = String.valueOf(sealDetail.get("yzsysmz")); // 印章使用人名字
+                    String yzsyzid = String.valueOf(sealDetail.get("yzsyzid")); // 使用人id
+                    String mobile = "";
+                    if (StringUtils.isNotBlank(yzsyzid)) {
+                        try {
+                            String[] userIds = yzsyzid.split(",");
+                            if (userIds.length > 0) {
+                                String yzsyzid2 = userIds[0];
+                                Map userInfoByMobile1 = ddClient_contacts.getUserInfoById(ddClient.getAccessToken(), yzsyzid2);
+                                if (userInfoByMobile1 != null && userInfoByMobile1.containsKey("mobile")) {
+                                    mobile = String.valueOf(userInfoByMobile1.get("mobile"));
                                 } else {
-                                    ydClient.operateData(YDParam.builder()
-                                            .formUuid("FORM-6D5B2C469B45456F9287C3575BFF92C7KUF6")
-                                            .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, name, sealId)))
-                                            .formDataJson(JSONObject.toJSONString(UtilMap.map(fd1, name, sealId, sealName, id)))
-                                            .build(), YDConf.FORM_OPERATION.upsert);
+                                    // 处理 userInfoByMobile1 没有 "mobile" 键的情况
+                                    log.error("User info does not contain the 'mobile' key.");
                                 }
+                            } else {
+                                // 处理 userIds 数组为空的情况
+                                log.error("User ID list is empty.");
                             }
+                        } catch (Exception e) {
+                            // 捕获并处理所有其他异常
+                            log.error("Error while processing user information: ", e);
                         }
                     }
-                } else {
-                    String sealId = ""; // 印章id
-                    String sealName = ""; // 印章名称
-                    String sealCategory = ""; // 印章类别
-
-                    ydClient.operateData(YDParam.builder()
-                            .formUuid("FORM-6D5B2C469B45456F9287C3575BFF92C7KUF6")
-                            .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, name, sealId)))
-                            .formDataJson(JSONObject.toJSONString(UtilMap.map(fd1, name, sealId, sealName, id)))
-                            .build(), YDConf.FORM_OPERATION.upsert).toString();
+                    String[] userIds = yzsyzid.split(",");
+                    String gszt = String.valueOf(sealDetail.get("gszt")); // 公司名称
+                    String id = String.valueOf(sealDetail.get("id")); // 印章id
+                    String yzmc = String.valueOf(sealDetail.get("yzmc")); // 印章名称
+                    yzsyzid1.add(yzsyzid);
+                    String sc = "textField_lu0k70cf, textField_lw5pfnr9, textField_lu0k70cg";
+                    String fd = "textField_lu0k70cf, textField_lw5pfnr9, textField_lu0k70cg";
+                    String fd1 = "textField_lu0k70cf, textField_lw5pfnr9, textField_lu0k70cg";
+                    if (yzsyzid1 != null) {
+                        Map mapForm = UtilMap.map(fd, gszt, id, yzmc);
+                        mapForm.put("employeeField_lwqbilgc", userIds);
+                        mapForm.put("textField_lwywvrx9", mobile);
+                        mapForm.put("radioField_lznyvvav", "启用"); // 状态
+                        mapForm.put("dateField_lznyvvaw", new Date().getTime()); // 同步时间
+                        ydClient.operateData(YDParam.builder()
+                                .formUuid("FORM-6D5B2C469B45456F9287C3575BFF92C7KUF6")
+                                .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, gszt, id, yzmc)))
+                                .formDataJson(JSONObject.toJSONString(mapForm))
+                                .build(), YDConf.FORM_OPERATION.upsert);
+                    } else {
+                        Map mapForm1 = UtilMap.map(fd1, gszt, id, yzmc);
+                        mapForm1.put("radioField_lznyvvav", "启用"); // 状态
+                        mapForm1.put("dateField_lznyvvaw", new Date().getTime()); // 同步时间
+                        ydClient.operateData(YDParam.builder()
+                                .formUuid("FORM-6D5B2C469B45456F9287C3575BFF92C7KUF6")
+                                .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, gszt, id, yzmc)))
+                                .formDataJson(JSONObject.toJSONString(mapForm1))
+                                .build(), YDConf.FORM_OPERATION.upsert);
+                    }
+                } catch (Exception e) {
+                    // 处理异常
+                    e.printStackTrace();
+                    // 可以在这里记录错误信息或者采取其他措施
+                    System.err.println("An error occurred while processing the data: " + e.getMessage());
                 }
             }
         }
@@ -323,16 +415,63 @@ public class dingshiqiImpl implements dingshiqi {
     @Override
     public void syncDelete() {
         DDR_New ddrNew = ydClient.queryData(YDParam.builder()
-                .formUuid("FORM-7ACCB70D96FA4187BD2042243641E54CD6VH")
+                .formUuid("FORM-11263AE5C32E4DD48CAECDBB93D838673UMK")
                 .build(), YDConf.FORM_QUERY.retrieve_search_form_id);
 
         System.out.println(ddrNew.getTotalCount());
 
         ydClient.operateData(YDParam.builder()
-                .formUuid("FORM-7ACCB70D96FA4187BD2042243641E54CD6VH")
+                .formUuid("FORM-11263AE5C32E4DD48CAECDBB93D838673UMK")
                 .asynchronousExecution(true)
                 .formInstanceIdList((List<String>) ddrNew.getData())
                 .build(), YDConf.FORM_OPERATION.delete_batch);
 
     }
+
+    @Autowired
+    private YDService ydService;
+
+    /**
+     * 停用数据同步逻辑
+     */
+    @Override
+    public void syncRecruitSource(String type) {
+
+        Map mapForm = UtilMap.map("YWFL, YZDZ, YZWL", "FORM-417576F4EE9F4AA1B2395BCD93B7A08C8ASN", "FORM-6D5B2C469B45456F9287C3575BFF92C7KUF6", "FORM-7ACCB70D96FA4187BD2042243641E54CD6VH");
+        String formUuid = UtilMap.getString(mapForm, type);
+        McException.assertParamException(StringUtils.isBlank(formUuid), "同步数据档案不存在!");
+        YDParam_T ydParamT = new YDParam_T();
+        ydParamT.setFormUuid(formUuid);
+        ydParamT.setSearchCondition(JSON.toJSONString(UtilMap.map("radioField_lznyvvav", "启用")));
+        ydParamT.setModifiedToTimeGMT(UtilDateTime.formatDate(new Date(new Date().getTime() - 1 * 24 * 60 * 60 * 1000L)));
+        List<Map> dataList = ydService.queryFormData_all(ydParamT);
+        dataList.forEach(item -> {
+            ydClient.operateData(YDParam.builder()
+                    .formInstanceId(UtilMap.getString(item, "instanceId"))
+                    .updateFormDataJson(JSON.toJSONString(UtilMap.map("radioField_lznyvvav", "停用")))
+                    .build(), YDConf.FORM_OPERATION.update);
+        });
+    }
+
+    /**
+     * 同步数据公共方法, 手动 + 定时
+     */
+    @SneakyThrows
+    @Override
+    public void syncCommon(String type) {
+
+        // todo 罗:: 判定不同来源, 这里触发原有逻辑同步, 添加同步时间和状态写入
+        if(type.equals("YWFL")){
+            getYWFLid();
+        }
+        if (type.equals("YZDZ")) {
+            getYWFLid2();
+        }
+        if (type.equals("YZWL")) {
+            getYWFLid1();
+        }
+
+        // 匹配停用数据做更新
+        this.syncRecruitSource(type);
+    }
 }

+ 9 - 2
mjava-ruisi/src/main/resources/application-dev.yml

@@ -9,7 +9,7 @@ logging:
   config: classpath:logback-spring.xml
   path: ./log
   level:
-    com.zitoo.connect.*: debug
+    com.malk.*: debug
 
 # dingtalk
 dingtalk:
@@ -35,4 +35,11 @@ teambition:
 # aliwork
 aliwork:
   appType: APP_VCTRP6227CC8368NDOID
-  systemToken: 5H9662C1X8XJLFFCE841M5VBEBQ73DM5IBPULPI3
+  systemToken: 5H9662C1X8XJLFFCE841M5VBEBQ73DM5IBPULPI3
+
+#spring:
+#  datasource:
+#    url: jdbc:mysql://10.9.33.236/qiyuesuo?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
+#    username: root
+#    password: hpZbPf6YnVr7
+#    driver-class-name: com.mysql.cj.jdbc.Driver