소스 검색

mc spring版本升级
宜搭接口新增

lfx 5 달 전
부모
커밋
10958a3a19

+ 9 - 3
mjava-mc/pom.xml

@@ -8,7 +8,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.2.0.RELEASE</version> <!-- 使用最新的稳定版或其他适用版本 -->
+        <version>2.7.18</version> <!-- 使用最新的稳定版或其他适用版本 -->
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
 
@@ -43,11 +43,17 @@
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.18</version>
         </dependency>
         <dependency>
             <groupId>com.malk</groupId>
             <artifactId>base</artifactId>
-            <version>1.1-SNAPSHOT</version>
+            <version>1.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
         </dependency>
     </dependencies>
 
@@ -57,7 +63,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.1</version>
+                <version>3.11.0</version>
                 <configuration>
                     <source>1.8</source>
                     <target>1.8</target>

+ 6 - 0
mjava-mc/src/main/java/com/malk/mc/controller/McYdController.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.malk.mc.service.McYdService;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McException;
 import com.malk.server.common.McR;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
@@ -135,4 +136,9 @@ public class McYdController {
         return mcYdService.convertSubTableNumber(map);
     }
 
+    @PostMapping("/saveApproverToForm")
+    public McR saveApproverToForm(@RequestBody Map map){
+        McException.assertParamException_Null(map,"formInstId","key");
+        return mcYdService.saveApproverToForm(map);
+    }
 }

+ 2 - 0
mjava-mc/src/main/java/com/malk/mc/service/McYdService.java

@@ -12,4 +12,6 @@ public interface McYdService {
     McR initiateApproval(Map map);
 
     McR convertSubTableNumber(Map map);
+
+    McR saveApproverToForm(Map map);
 }

+ 29 - 0
mjava-mc/src/main/java/com/malk/mc/service/impl/McYdServiceImpl.java

@@ -2,6 +2,7 @@ package com.malk.mc.service.impl;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.NumberUtil;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.malk.core.McProject;
 import com.malk.mc.service.McYdService;
@@ -208,6 +209,34 @@ public class McYdServiceImpl implements McYdService {
         return McR.success();
     }
 
+    @Override
+    public McR saveApproverToForm(Map map) {
+        String key = UtilMap.getString(map,"key");
+        String formInstId = UtilMap.getString(map,"formInstId");
+        JSONArray jsonArray=(JSONArray) ydClient.queryData(YDParam.builder().processInstanceId(formInstId).build(),YDConf.FORM_QUERY.retrieve_approval_record).getResult();
+        List<String> userIds = new ArrayList<>();
+        extractOperatorIds(jsonArray,userIds);
+        ydClient.operateData(YDParam.builder().updateFormDataJson(JSONObject.toJSONString(UtilMap.map(key,userIds))).formInstId(formInstId).build(), YDConf.FORM_OPERATION.update);
+        return McR.success();
+    }
+
+    private static void extractOperatorIds(JSONArray array, List<String> result) {
+        for (Object item : array) {
+            JSONObject obj = (JSONObject) item;
+
+            // 提取当前层级的 operatorUserId 或 operator
+            String userId = obj.getString("operatorUserId");
+            if (userId == null) userId = obj.getString("operator"); // 处理 domainList 中的字段
+            if (userId != null) result.add(userId);
+
+            // 递归处理 domainList
+            JSONArray domainList = obj.getJSONArray("domainList");
+            if (domainList != null && !domainList.isEmpty()) {
+                extractOperatorIds(domainList, result);
+            }
+        }
+    }
+
     private String getString(Object obj){
         return obj == null ? "" : obj.toString();
     }

+ 2 - 1
mjava-mc/src/main/resources/application-prod.yml

@@ -4,7 +4,8 @@ server:
     context-path: /api/mc
 spring:
   datasource:
-    url: jdbc:mysql://127.0.0.1:3306/mc?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
+#    url: jdbc:mysql://127.0.0.1:3306/mc?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
+    url: jdbc:mysql://47.97.181.40:3306/mc?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
     username: root
     password: cp-root@2022++
     driver-class-name: com.mysql.cj.jdbc.Driver

+ 138 - 0
mjava-mc/src/test/java/com/malk/mc/YyYdTest.java

@@ -6,10 +6,13 @@ import cn.hutool.core.util.IdUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.malk.core.McProject;
+import com.malk.mc.service.McYdService;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
+import com.malk.server.aliwork.YDSearch;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
 import com.malk.service.aliwork.YDService;
@@ -243,4 +246,139 @@ public class YyYdTest {
         }
     }
 
+    /***
+     * 客户档案最终用户回刷
+     */
+    @Test
+    public void test5(){
+        MDC.put("MDC_KEY_PID","1013");
+        YDParam ydParam=YDParam.builder().formUuid("FORM-E83C9E307FFB4A978E0CB8DE1B899E9DXTXB").build();
+        float pageSize = (float)YDConf.PAGE_SIZE_LIMIT;
+        ydParam.setPageSize(1);
+        long totalCount = this.ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getTotalCount();
+        ydParam.setCurrentPage(1);
+        ydParam.setPageSize((int)pageSize);
+        for(int page = 1; (double)page <= Math.ceil((double)((float)totalCount / pageSize)); ++page) {
+            ydParam.setCurrentPage(page);
+            List<Map> datalist=(List)this.ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
+            for (int i = 0; i < datalist.size(); i++) {
+                Map data=datalist.get(i);
+                log.info("第{}页,第{}条数据:{}",page,i+1,data.get("formInstanceId"));
+//                Map formData=UtilMap.getMap(data,"formData");
+//                if(PublicUtil.isNull(formData,"textField_m7txzt1j")){
+//                    continue;
+//                }
+//                List<Map> table=UtilMap.getList(formData,"tableField_lvuku8m3");
+//                List<String> s1=new ArrayList<>(); // 省
+//                List<String> s2=new ArrayList<>(); // 市
+//                List<String> s3=new ArrayList<>(); // 最终用户
+//                List<String> s4=new ArrayList<>(); // 医院等级
+//                for (Map item:table) {
+//                    String name=UtilMap.getString(item,"selectField_lw4jf0ys");
+//                    Map khMap=getData(name);
+//                    Map ddMap=JSONObject.parseObject(String.valueOf(khMap.get("addressField_lugff49g")),Map.class);
+//                    if(ddMap==null||!ddMap.containsKey("regionText")){
+//                        continue;
+//                    }
+//                    List<Map> regionText=UtilMap.getList(ddMap,"regionText");
+//                    item.put("textField_m7lccg50",UtilMap.getString(regionText.get(0),"zh_CN"));
+//                    item.put("textField_m7lccg51",UtilMap.getString(regionText.get(1),"zh_CN"));
+//                    item.put("textField_m1ajkyj0",UtilMap.getString(khMap,"selectField_m72yft63"));
+//                    s1.add(UtilMap.getString(regionText.get(0),"zh_CN"));
+//                    s2.add(UtilMap.getString(regionText.get(1),"zh_CN"));
+//                    s3.add(name);
+//                    s4.add(UtilMap.getString(khMap,"selectField_m72yft63"));
+//
+//                }
+//                Map upMap=UtilMap.map("tableField_lvuku8m3, textField_m7txzt1j, textField_m7txzt1k, textField_m7txsvfu, textField_m7txsvfv",
+//                        table,String.join("/",s1),String.join("/",s2),String.join("/",s3),String.join("/",s4));
+                Map upMap=UtilMap.map("textField_m7txzt1j, textField_m7txzt1k, textField_m7txsvfu, textField_m7txsvfv","","","","");
+                ydClient.operateData(YDParam.builder().formInstanceId(String.valueOf(data.get("formInstanceId"))).updateFormDataJson(JSONObject.toJSONString(upMap))
+                        .useLatestVersion(false).build(),  YDConf.FORM_OPERATION.update);
+            }
+        }
+    }
+
+    Map<String,Map> KH_LIST=new  HashMap();
+
+    public Map getData(String name){
+        if(KH_LIST.containsKey(name)){
+            return KH_LIST.get(name);
+        }
+        List<Map> datalist=(List) ydClient.queryData(YDParam.builder().formUuid("FORM-4020139BCB3341349EE81F5332085D35C294")
+                .searchFieldJson(JSONObject.toJSONString(Arrays.asList(new YDSearch("textField_lr60luaz",name,"textField_lr60luaz", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ))))//精准匹配
+                .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
+        if(datalist!=null&&datalist.size()>0){
+            KH_LIST.put(name,UtilMap.getMap(datalist.get(0),"formData"));
+            return UtilMap.getMap(datalist.get(0),"formData");
+        }else return new HashMap<>();
+    }
+
+    @Test
+    public void test4(){
+        MDC.put("MDC_KEY_PID","1013");
+        YDParam ydParam=YDParam.builder().formUuid("FORM-4020139BCB3341349EE81F5332085D35C294").build();
+        float pageSize = (float)YDConf.PAGE_SIZE_LIMIT;
+        ydParam.setPageSize(1);
+        long totalCount = this.ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getTotalCount();
+        ydParam.setCurrentPage(1);
+        ydParam.setPageSize((int)pageSize);
+        for(int page = 1; (double)page <= Math.ceil((double)((float)totalCount / pageSize)); ++page) {
+            ydParam.setCurrentPage(page);
+            List<Map> datalist=(List)this.ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
+            for (int i = 0; i < datalist.size(); i++) {
+                Map data=datalist.get(i);
+                log.info("第{}页,第{}条数据:{}",page,i+1,data.get("formInstanceId"));
+                Map formData=UtilMap.getMap(data,"formData");
+                if(formData.containsKey("textField_m7u2p5n8")){
+                    continue;
+                }
+                Map ddMap=JSONObject.parseObject(String.valueOf(formData.get("addressField_lugff49g")),Map.class);
+                if(ddMap==null||!ddMap.containsKey("regionText")){
+                    continue;
+                }
+                List<Map> regionText=UtilMap.getList(ddMap,"regionText");
+                Map upMap=UtilMap.map("textField_m7u2p5n8, textField_m7u2p5nd",UtilMap.getString(regionText.get(0),"zh_CN"),UtilMap.getString(regionText.get(1),"zh_CN"));
+                ydClient.operateData(YDParam.builder().formInstanceId(String.valueOf(data.get("formInstanceId"))).updateFormDataJson(JSONObject.toJSONString(upMap))
+                        .useLatestVersion(true).build(),  YDConf.FORM_OPERATION.update);
+            }
+        }
+    }
+
+
+    @Test
+    public void test6(){
+        MDC.put("MDC_KEY_PID","1013");
+        JSONArray jsonArray=(JSONArray) ydClient.queryData(YDParam.builder().processInstanceId("e3736942-fc06-426c-9000-53fe8c7c56b7").build(),YDConf.FORM_QUERY.retrieve_approval_record).getResult();
+        List<String> userIds = new ArrayList<>();
+        extractOperatorIds(jsonArray,userIds);
+        log.info("{}",userIds);
+    }
+
+    private static void extractOperatorIds(JSONArray array, List<String> result) {
+        for (Object item : array) {
+            JSONObject obj = (JSONObject) item;
+
+            // 提取当前层级的 operatorUserId 或 operator
+            String userId = obj.getString("operatorUserId");
+            if (userId == null) userId = obj.getString("operator"); // 处理 domainList 中的字段
+            if (userId != null) result.add(userId);
+
+            // 递归处理 domainList
+            JSONArray domainList = obj.getJSONArray("domainList");
+            if (domainList != null && !domainList.isEmpty()) {
+                extractOperatorIds(domainList, result);
+            }
+        }
+    }
+
+    @Autowired
+    private McYdService mcYdService;
+
+    @Test
+    public void test7(){
+        mcYdService.saveApproverToForm(UtilMap.map("formInstId, key","7fa8fd99-c513-4b7a-b74d-7466e3051e01","employeeField_m7vdpfgm"));
+    }
+
+
 }