Browse Source

达利项目钉钉OA审批回调对接云简为同行人也推送单据

fyz 1 month ago
parent
commit
ef37fc3ed0

+ 54 - 37
mjava-dali/src/main/java/com/malk/dali/service/Impl/PayServiceImpl.java

@@ -87,7 +87,7 @@ public class PayServiceImpl implements PayService {
         if (!isHave[0]) {
             token[0] = getToken();
         }
-        HashMap<String, Object> param = new HashMap<>();
+        Map<String, Object> param = new HashMap<>();
         param.put("access_token", token[0]);
         //获取申请人数据
         List<Map> userName = new ArrayList<>();
@@ -106,52 +106,69 @@ public class PayServiceImpl implements PayService {
             List<String> companionsUserIds = (List<String>)formData.get("出行人(同行人)");
             List<String> companionsWorkNumbers = getNumberByUserId(companionsUserIds);
             List<Map> companionsUserName = getUserFormByNumber(companionsWorkNumbers, token[0]);
+            userName.addAll(companionsUserName);
             names = companionsUserName.stream().map(item -> item.get("name")).collect(Collectors.toList());
         }
+        // 去重
+        List<Map> uniqueUsers= new ArrayList<>(userName.stream()
+                .filter(m -> m != null) // 过滤掉空值
+                .collect(Collectors.toMap(
+                        m -> m.toString(), // 使用 map 的 toString() 作为唯一标识符
+                        m -> m,           // 保留原 map
+                        (existing, replacement) -> existing // 遇到重复时保留已有元素
+                )).values());
+        extracted(formData, param, uniqueUsers, names);
+    }
+
+    private void extracted(Map formData, Map<String, Object> param, List<Map> userName, List<Object> names) {
+        String uuid = UUID.randomUUID().toString();
         BigDecimal defaultValue = new BigDecimal("0.0");
         for (Map detail : (List<Map>) formData.get("日程")) {
-            if ("汽车".equals(detail.get("交通工具"))){
-                detail.put("出发城市",UtilMap.getString(detail,"出发城市").split("市")[0]);
-                detail.put("目的城市",UtilMap.getString(detail,"目的城市").split("市")[0]);
-            }
-            // 生成UUID
-            String uuid = UUID.randomUUID().toString();
-            DocumentHeader documentHeader = new DocumentHeader();
+            for (int i = 0; i < userName.size(); i++) {
+                if ("汽车".equals(detail.get("交通工具"))){
+                    detail.put("出发城市",UtilMap.getString(detail,"出发城市").split("市")[0]);
+                    detail.put("目的城市",UtilMap.getString(detail,"目的城市").split("市")[0]);
+                }
+                // 生成UUID
+                log.info("记录系统单据编号id:{}",uuid);
+                DocumentHeader documentHeader = new DocumentHeader();
 //            documentHeader.setExternal_id(formData.get("出差流水号").toString());
-            documentHeader.setExternal_id(uuid);
-            documentHeader.setHeader_type_code("SQ001");
-            documentHeader.setStatus("approved");
-            documentHeader.setCreated_by_code(userName.get(0).get("code").toString());//
+                uuid = uuid + userName.get(i).get("code");
+                documentHeader.setExternal_id(uuid);
+                documentHeader.setHeader_type_code("SQ001");
+                documentHeader.setStatus("approved");
+                documentHeader.setCreated_by_code(userName.get(i).get("code").toString());//
 //            documentHeader.setCreatedByCode(formData.get("userId").toString());
 //            documentHeader.setSubmitUserCode(formData.get("userId").toString());
-            documentHeader.setSubmit_user_code(userName.get(0).get("code").toString());//
-            documentHeader.setSubmit_date(Long.valueOf(formData.get("createTime").toString()));
-            documentHeader.setBranch_code(getCompany(userName.get(0).get("depCode").toString(),token[0]));
-            documentHeader.setSubmit_department_code(userName.get(0).get("depCode").toString());//
-            documentHeader.setColumn1(formData.get("出差类型") == null ? "" : BUSINESS_TYPE.get(formData.get("出差类型").toString()));
+                documentHeader.setSubmit_user_code(userName.get(i).get("code").toString());//
+                documentHeader.setSubmit_date(Long.valueOf(formData.get("createTime").toString()));
+                documentHeader.setBranch_code(getCompany(userName.get(i).get("depCode").toString(), param.get("access_token").toString()));
+                documentHeader.setSubmit_department_code(userName.get(i).get("depCode").toString());//
+                documentHeader.setColumn1(formData.get("出差类型") == null ? "" : BUSINESS_TYPE.get(formData.get("出差类型").toString()));
 //            documentHeader.setColumn1("1");
-            documentHeader.setStart_datetime(DateUtil.parse(detail.get("开始时间").toString(), "yyyy-MM-dd").getTime());
-            documentHeader.setEnd_datetime(DateUtil.parse(detail.get("结束时间").toString(), "yyyy-MM-dd").getTime());
-            documentHeader.setColumn2(formData.get("出差天数").toString());
-            documentHeader.setDestination_city_name(detail.get("出发城市").toString());
-            documentHeader.setDestination_city_to_name(detail.get("目的城市").toString());
-            documentHeader.setDestination_cities(detail.get("目的城市").toString());
-            documentHeader.setColumn15(BUSINESS_TOOL.get(detail.get("交通工具").toString()));
-            documentHeader.setColumn16(names.toString().replace("[","").replace("]",""));//同行人
-            documentHeader.setDescription(formData.get("备注") == null ? "" : formData.get("备注").toString());
+                documentHeader.setStart_datetime(DateUtil.parse(detail.get("开始时间").toString(), "yyyy-MM-dd").getTime());
+                documentHeader.setEnd_datetime(DateUtil.parse(detail.get("结束时间").toString(), "yyyy-MM-dd").getTime());
+                documentHeader.setColumn2(formData.get("出差天数").toString());
+                documentHeader.setDestination_city_name(detail.get("出发城市").toString());
+                documentHeader.setDestination_city_to_name(detail.get("目的城市").toString());
+                documentHeader.setDestination_cities(detail.get("目的城市").toString());
+                documentHeader.setColumn15(BUSINESS_TOOL.get(detail.get("交通工具").toString()));
+                documentHeader.setColumn16(names.toString().replace("[","").replace("]",""));//同行人
+                documentHeader.setDescription(formData.get("出差事由") == null ? "" : formData.get("出差事由").toString());
 //            documentHeader.setDescription("123123");
-            documentHeader.setTotal_amount(defaultValue);
-            documentHeader.setTotal_claim_amount(defaultValue);
-            documentHeader.setTotal_pay_amount(defaultValue);
-            documentHeader.setTotal_net_amount(defaultValue);
-            documentHeader.setTotal_tax_amount(defaultValue);
-            documentHeader.setTotal_pay_currency_amount(defaultValue);
+                documentHeader.setTotal_amount(defaultValue);
+                documentHeader.setTotal_claim_amount(defaultValue);
+                documentHeader.setTotal_pay_amount(defaultValue);
+                documentHeader.setTotal_net_amount(defaultValue);
+                documentHeader.setTotal_tax_amount(defaultValue);
+                documentHeader.setTotal_pay_currency_amount(defaultValue);
 
-            log.info("documentHeader:{}",documentHeader.toString());
-            HashMap<String, Object> data = new HashMap<>();
-            data.put("header", documentHeader);
-            Map<String, Object> body = UtilMap.map("bizId, timestamp, data", uuid, new Date().getTime(), data);
-            DDR.doPost(getRequestUrl(POST_DATA_URL), null, param, body);
+                log.info("documentHeader:{}",documentHeader.toString());
+                HashMap<String, Object> data = new HashMap<>();
+                data.put("header", documentHeader);
+                Map<String, Object> body = UtilMap.map("bizId, timestamp, data", uuid, new Date().getTime(), data);
+                DDR.doPost(getRequestUrl(POST_DATA_URL), null, param, body);
+            }
         }
     }
 

+ 2 - 1
mjava-dali/src/main/resources/application-dev.yml

@@ -10,12 +10,13 @@ spel:
   multiSource: false       # 是否多数据源配置
 
 spring:
+  # database
   datasource:
     hikari:
       connection-init-sql: SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci           # SqlServer, Oracle 无需设置类型
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: root
-    password: cp-root@2022++
+    password: cp-root@2022++123
     url: jdbc:mysql://47.97.181.40:3306/dingtalk?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
   jpa:
     hibernate:

+ 5 - 5
pom.xml

@@ -340,11 +340,11 @@
             <artifactId>mysql-connector-java</artifactId>
         </dependency>
         <!--        引入mybatisPlus 包含了 jdbc -->
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>${mybatis-plus.version}</version>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.baomidou</groupId>-->
+<!--            <artifactId>mybatis-plus-boot-starter</artifactId>-->
+<!--            <version>${mybatis-plus.version}</version>-->
+<!--        </dependency>-->
 
         <!--        引入durid數據源-->
         <dependency>