Explorar o código

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdCustomerServiceImpl.java
“lqy hai 2 días
pai
achega
15ba6550bb

+ 4 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdHuaGaoServiceImpl.java

@@ -88,6 +88,10 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
         WeekFields weekFields = WeekFields.of(Locale.getDefault());
         int weekOfMonth = today.get(weekFields.weekOfMonth());//当前日期是当月的第几周
 
+        /*int year = 2026;//获取当前年份
+        int month = 1;//当前月份
+        int weekOfMonth = 4;//当前日期是当月的第几周*/
+
         try {
             //删除宜搭当周序列号主档数据
             log.info("开始删除序列号主档数据:{}年,{}月,{}周",year,month,weekOfMonth);

+ 29 - 27
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdCustomerServiceImpl.java

@@ -21,6 +21,7 @@ import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
@@ -46,6 +47,9 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
     @Autowired
     private KdYdCustomerLiaisonMapper kdYdCustomerLiaisonMapper;
 
+    @Value(value = "${kd.host}")
+    private String kdHost;
+
     @Override
     public Map<String, Object> insertCustomer(Map map) {
         Map<String, Object> result = new HashMap<>();
@@ -62,21 +66,20 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
                 headers.put("Content-Type", "application/x-www-form-urlencoded");
                 Map<String, Object> formParams = new HashMap<>();
                 Map<String, Object> djbh = new HashMap<>();
-                djbh.put("khbm", bm);
+                djbh.put("djbh", bm);
                 result.put("data", djbh);
                 String jsonStr = JSON.toJSONString(result);
 
                 formParams.put("jsons", jsonStr);
 
                 System.out.println("====" + formParams);
-                HttpResponse response = HttpRequest.post("http://113.45.187.194:70/xk/dyzn/WsBasedyzn.asmx/hgdjydtbdeletecust")
+                HttpResponse response = HttpRequest.post(kdHost+"/xk/dyzn/WsBasedyzn.asmx/")//todo 待完善接口
                         .headerMap(headers, true)
                         .form(formParams)
                         .timeout(30000)  // 30秒超时
                         .execute();
 
                 String responseBody = response.body();
-                System.out.println("====" + responseBody);
                 // 返回删除操作的格式
                 result.put("table", "KD_YD_CUSTOMER");
                 result.put("action", "del");
@@ -96,9 +99,7 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
 
             // === 提取主表字段 ===
             String khmc = UtilMap.getString(formData, "textField_lqanqe6j");
-//            String khmc = "测试1111222";
             String khbm = UtilMap.getString(formData, "textField_meqhqqvg");
-//            String khbm = "kh2121212";
             String xssx = UtilMap.getString(formData, "selectField_megi74y7");
             String khxypj = UtilMap.getString(formData, "selectField_mewirdx4");
             String khsx = UtilMap.getString(formData, "selectField_megi74y8");
@@ -107,9 +108,7 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
             String khfz = UtilMap.getString(formData, "selectField_lqanqe6q");
             String fptt = UtilMap.getString(formData, "textField_llujklkr");
             String nsdjh = UtilMap.getString(formData, "textField_meqhqqvm");
-//            String nsdjh = "24234234";
             String khyh = UtilMap.getString(formData, "textField_meqhqqvn");
-//            String khyh = "建设银行";
             String yhzh = UtilMap.getString(formData, "textField_meqhqqvs");
             String jxslx = UtilMap.getString(formData, "selectField_mis6kl56");
             String kplx = UtilMap.getString(formData, "selectField_lwopqbye");
@@ -125,8 +124,6 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
             String qyxygl = UtilMap.getString(formData, "radioField_mfxs7rd2");
             String mrsl = UtilMap.getString(formData, "selectField_mfxrryt3");
             String sfl = UtilMap.getString(formData, "selectField_mfxrryt2");
-            String sfjtkh = UtilMap.getString(formData, "radioField_mhe8e937");
-            String dyjtkh = UtilMap.getString(formData, "textField_mis6kl57");
 
             // 构建主表数据
             Map<String, Object> customData = new HashMap<>();
@@ -142,7 +139,7 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
             customData.put("nsdjh", nsdjh);
             customData.put("khyh", khyh);
             customData.put("yhzh", yhzh);
-            customData.put("khlx", jxslx);
+            customData.put("jxslx", jxslx);
             customData.put("kplx", kplx);
             customData.put("kplxdh", kplxdh);
             customData.put("kptxdz", kptxdz);
@@ -156,8 +153,6 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
             customData.put("qyxygl", qyxygl);
             customData.put("mrsl", mrsl);
             customData.put("sfl", sfl);
-            customData.put("sfjtkh", sfjtkh);
-            customData.put("dyjtkh", dyjtkh);
 
             // 处理子表数据
             List<Map<String, Object>> contactList = new ArrayList<>();
@@ -174,7 +169,6 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
                     String zw = safeGetString(item, "textField_l3s6ubht");
                     String gddh = safeGetString(item, "textField_mfxu5dnk");
                     String bm = safeGetString(item, "textField_mfkp33s5");
-//                    String bm = "LXR239234112";
                     String yx = safeGetString(item, "textField_lqbzc3gr");
 
                     // 添加到联系人列表
@@ -200,16 +194,16 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
 // 构建form参数
                 Map<String, Object> formParams = new HashMap<>();
                 formParams.put("jsons", jsonStr);
-                System.out.println("formParams"+formParams);
+// 发送请求
                 HttpResponse response = null;
-                if ("add".equals(action)) {
-                    response = HttpRequest.post("http://113.45.187.194:70/xk/dyzn/WsBasedyzn.asmx/hgdjydtbcreatecust")
+                if (action == "add") {
+                    response = HttpRequest.post(kdHost+"/xk/dyzn/WsBasedyzn.asmx/")//todo 修改接口
                             .headerMap(headers, true)
                             .form(formParams)
                             .timeout(30000)  // 30秒超时
                             .execute();
                 } else {
-                    response = HttpRequest.post("http://113.45.187.194:70/xk/dyzn/WsBasedyzn.asmx/hgdjydtbupdatecust")
+                    response = HttpRequest.post(kdHost+"/xk/dyzn/WsBasedyzn.asmx/")
                             .headerMap(headers, true)
                             .form(formParams)
                             .timeout(30000)  // 30秒超时
@@ -217,32 +211,40 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
                 }
 
                 String responseBody = response.body();
-                System.out.println("responseBody" + responseBody);
                 try {
                     // 一行代码提取
-//                    String jdbh = JSON.parseArray(responseBody)
-//                            .getJSONObject(0)
-//                            .getJSONObject("data")
-//                            .getString("djbh");
+                    String jdbh = JSON.parseArray(responseBody)
+                            .getJSONObject(0)
+                            .getJSONObject("data")
+                            .getString("djbh");
                     String msg = JSON.parseArray(responseBody)
                             .getJSONObject(0)
                             .getString("msg");
-                    String code = JSON.parseArray(responseBody)
-                            .getJSONObject(0)
-                            .getString("code");
                     ydClient.operateData(
                             YDParam.builder()
                                     .formInstanceId(formInstId)
-                                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_ml08nk3y, textareaField_mkxqgrvq", code, msg)))
+                                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textareaField_mkxqgrvq, textField_mjs6fuwo", msg, jdbh)))
                                     .useLatestVersion(true).build(),
                             YDConf.FORM_OPERATION.update);
-//
+//                    Map<String, Object> updatePayload = new HashMap<>();
+//                    updatePayload.put("tableField_mfkks8ww", updatedTableRowsForYD);
+//                    ydClient.operateData(
+//                            YDParam.builder()
+//                                    .formInstanceId(formInstId)
+//                                    .updateFormDataJson(JSONObject.toJSONString(updatePayload))
+//                                    .useLatestVersion(true)
+//                                    .build(),
+//                            YDConf.FORM_OPERATION.update
+//                    );
                     log.info("回写数据到宜搭成功,formInstId: {}", formInstId);
                 } catch (Exception e) {
                     log.warn("回写数据到宜搭失败,formInstId: {}, 错误: {}", formInstId, e.getMessage());
                 }
             }
 
+            // 构建返回结果
+            result.put("table", "KD_YD_CUSTOMER");
+            result.put("action", action != null ? action : "add");
             result.put("data", customData);
 
             log.info("客户信息同步成功: formInstId={}, khmc={}, khbm={}", formInstId, khmc, khbm);

+ 9 - 5
mjava-huagao/src/main/resources/application-dev.yml

@@ -16,7 +16,7 @@ spring:
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
     #trustServerCertificate=true 临时绕过证书验证的风险
-    url: jdbc:sqlserver://113.45.187.194:1433;databaseName=dingding;encrypt=true;trustServerCertificate=true;
+    url: jdbc:sqlserver://61.174.28.154:1433;databaseName=dingding;encrypt=true;trustServerCertificate=true;
     username: hgdd
     password: hgdd@2025
 
@@ -48,15 +48,15 @@ aliwork:
 
 kingdee:
   # 第三方系统登录授权的账套ID
-  X-KDApi-AcctID: 626cda24137359
+  X-KDApi-AcctID: 697ecdcc4267e8
   # 第三方系统登录授权的用户
   X-KDApi-UserName: dingding
   # 第三方系统登录授权的应用ID
-  X-KDApi-AppID: 322503_566rSdHtylkb4+XoW1XoRdVGSqW85LOs
+  X-KDApi-AppID: 335775_R16NTZiFTpq/2+1vR74KQbSs2K0b0oms
   # 第三方系统登录授权的应用密钥
-  X-KDApi-AppSec: 7eaf6845da0540e6b8f328541b36dff6
+  X-KDApi-AppSec: ce7e0211058a428ca858d332e7f80f4d
   # 服务Url地址(公有云统一走网关sdk底层已处理,无需传X-KDApi-ServerUrl,下面这行需要注释)
-  X-KDApi-ServerUrl: http://113.45.187.194:81/k3cloud/
+  X-KDApi-ServerUrl: http://61.174.28.154:81/k3cloud/
   # 账套语系,默认2052
   # X-KDApi-LCID: 2052
   # 组织编码,启用多组织时配置对应的组织编码才有效
@@ -70,6 +70,10 @@ eqb:
   downloadFilePath: C:\\Users\\EDY\\Desktop\\项目\\华高\\电子签\\files\\
   signatoryPsnId: c3fb35cb7e574baf97ed9f8917c6327b #签署人 陈伟东
 
+#金蝶方开发服务
+kd:
+  host: https://61.174.28.154:70
+
 
 
 

+ 11 - 7
mjava-huagao/src/main/resources/application-prod.yml

@@ -2,7 +2,7 @@ server:
   port: 7708
   servlet:
     context-path: /huagao
-  host: http://mes.huagaochina.com:7708
+  host: http://61.174.28.154:7708
 
 enable:
   scheduling: true
@@ -16,7 +16,7 @@ spring:
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
     #trustServerCertificate=true 临时绕过证书验证的风险
-    url: jdbc:sqlserver://113.45.187.194:1433;databaseName=dingding;encrypt=true;trustServerCertificate=true;
+    url: jdbc:sqlserver://172.16.24.19:1433;databaseName=dingding;encrypt=true;trustServerCertificate=true;
     username: hgdd
     password: hgdd@2025
 
@@ -48,15 +48,15 @@ aliwork:
 
 kingdee:
   # 第三方系统登录授权的账套ID
-  X-KDApi-AcctID: 626cda24137359
+  X-KDApi-AcctID: 697ecdcc4267e8
   # 第三方系统登录授权的用户
   X-KDApi-UserName: dingding
   # 第三方系统登录授权的应用ID
-  X-KDApi-AppID: 322503_566rSdHtylkb4+XoW1XoRdVGSqW85LOs
+  X-KDApi-AppID: 335775_R16NTZiFTpq/2+1vR74KQbSs2K0b0oms
   # 第三方系统登录授权的应用密钥
-  X-KDApi-AppSec: 7eaf6845da0540e6b8f328541b36dff6
+  X-KDApi-AppSec: ce7e0211058a428ca858d332e7f80f4d
   # 服务Url地址(公有云统一走网关sdk底层已处理,无需传X-KDApi-ServerUrl,下面这行需要注释)
-  X-KDApi-ServerUrl: http://113.45.187.194:81/k3cloud/
+  X-KDApi-ServerUrl: http://61.174.28.154:81/k3cloud/
   # 账套语系,默认2052
   # X-KDApi-LCID: 2052
   # 组织编码,启用多组织时配置对应的组织编码才有效
@@ -68,4 +68,8 @@ kingdee:
 
 eqb:
   downloadFilePath: /home/server/huagao/files/
-  signatoryPsnId: c3fb35cb7e574baf97ed9f8917c6327b #签署人 陈伟东
+  signatoryPsnId: c3fb35cb7e574baf97ed9f8917c6327b #签署人 陈伟东
+
+#金蝶方开发服务
+kd:
+  host: http://172.16.24.173:70

+ 11 - 7
mjava-huagao/src/main/resources/application-prod2.yml

@@ -3,7 +3,7 @@ server:
   port: 7708
   servlet:
     context-path: /huagao
-    host: http://mes.huagaochina.com:7708
+    host: http://61.174.28.154:7708
 
 enable:
   scheduling: true
@@ -17,7 +17,7 @@ spring:
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
     #trustServerCertificate=true 临时绕过证书验证的风险
-    url: jdbc:sqlserver://113.45.187.194:1433;databaseName=dingding;encrypt=true;trustServerCertificate=true;
+    url: jdbc:sqlserver://172.16.24.19:1433;databaseName=dingding;encrypt=true;trustServerCertificate=true;
     username: hgdd
     password: hgdd@2025
 
@@ -49,15 +49,15 @@ aliwork:
 
 kingdee:
   # 第三方系统登录授权的账套ID
-  X-KDApi-AcctID: 626cda24137359
+  X-KDApi-AcctID: 697ecdcc4267e8
   # 第三方系统登录授权的用户
   X-KDApi-UserName: dingding
   # 第三方系统登录授权的应用ID
-  X-KDApi-AppID: 322503_566rSdHtylkb4+XoW1XoRdVGSqW85LOs
+  X-KDApi-AppID: 335775_R16NTZiFTpq/2+1vR74KQbSs2K0b0oms
   # 第三方系统登录授权的应用密钥
-  X-KDApi-AppSec: 7eaf6845da0540e6b8f328541b36dff6
+  X-KDApi-AppSec: ce7e0211058a428ca858d332e7f80f4d
   # 服务Url地址(公有云统一走网关sdk底层已处理,无需传X-KDApi-ServerUrl,下面这行需要注释)
-  X-KDApi-ServerUrl: http://113.45.187.194:81/k3cloud/
+  X-KDApi-ServerUrl: http://61.174.28.154:81/k3cloud/
   # 账套语系,默认2052
   # X-KDApi-LCID: 2052
   # 组织编码,启用多组织时配置对应的组织编码才有效
@@ -69,4 +69,8 @@ kingdee:
 
 eqb:
   downloadFilePath: /home/server/huagao/files/
-  signatoryPsnId: c3fb35cb7e574baf97ed9f8917c6327b #签署人 陈伟东
+  signatoryPsnId: c3fb35cb7e574baf97ed9f8917c6327b #签署人 陈伟东
+
+#金蝶方开发服务
+kd:
+  host: http://172.16.24.173:70

+ 6 - 0
mjava-lianan/src/main/java/com/malk/lianan/controller/LianAnGyPayController.java

@@ -104,4 +104,10 @@ public class LianAnGyPayController {
         return lianAnGyPayService.salaryPay(map);
     }
 
+    //通用报销
+    @PostMapping("reimburse")
+    public McR reimburse(@RequestBody Map map){
+        return lianAnGyPayService.reimburse(map);
+    }
+
 }

+ 19 - 0
mjava-lianan/src/main/java/com/malk/lianan/schedule/LianAnScheduleTask.java

@@ -0,0 +1,19 @@
+package com.malk.lianan.schedule;
+
+import com.malk.lianan.service.LianAnService;
+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;
+
+@Slf4j
+@Configuration
+@EnableScheduling
+@ConditionalOnProperty(name = {"enable.scheduling"})
+public class LianAnScheduleTask {
+    @Autowired
+    private LianAnService lianAnService;
+
+}

+ 2 - 0
mjava-lianan/src/main/java/com/malk/lianan/service/LianAnGyPayService.java

@@ -12,4 +12,6 @@ public interface LianAnGyPayService {
     void callback(Map result);
 
     McR salaryPay(Map map);
+
+    McR reimburse(Map map);
 }

+ 5 - 0
mjava-lianan/src/main/java/com/malk/lianan/service/LianAnService.java

@@ -0,0 +1,5 @@
+package com.malk.lianan.service;
+
+public interface LianAnService {
+
+}

+ 107 - 13
mjava-lianan/src/main/java/com/malk/lianan/service/impl/LianAnGyServiceImpl.java

@@ -15,6 +15,7 @@ import com.malk.service.aliwork.YDClient;
 import com.malk.utils.UtilDateTime;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.util.Strings;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
@@ -115,8 +116,8 @@ public class LianAnGyServiceImpl implements LianAnGyPayService {
             paymentRec.put("PrivateAmount",privateAmount);
             paymentRec.put("ReceiveAccountNo",receiveAccountNo);
             paymentRec.put("ReceiveAccountName",receiveAccountName);
-            paymentRec.put("PayUse",payUse);
-            paymentRec.put("Purpose",payUse);
+            paymentRec.put("PayUse","付款");//摘要长度上限20
+            paymentRec.put("Purpose","付款");
 
             paymentRecList.add(paymentRec);
         }
@@ -168,7 +169,9 @@ public class LianAnGyServiceImpl implements LianAnGyPayService {
 
         String payAmount = UtilMap.getDouble(formData, "numberField_mjqt1xrt").toString();
 
-        String payUse = UtilMap.getString(formData, "textareaField_mjsl53kh");//摘要
+        String fymx = UtilMap.getString(formData, "textareaField_mjsl53kh");//费用明细
+
+        String purpose = UtilMap.getString(formData, "selectField_mjzgprmw");//付款类型 用途
 
         int retryNum = UtilMap.getInt(formData, "numberField_mkf5q51o");//重试次数
 
@@ -185,8 +188,9 @@ public class LianAnGyServiceImpl implements LianAnGyPayService {
         item.put("PayCurrencyType","CNY");//币种(为空,默认: CNY 有付款账号时,不能为 空)
         item.put("PayCurrencyName","人民币");//币种名称(为空,默认:人民币, 有付款账号时,不能为空)
         item.put("WhetherUrgent",whetherUrgentValue);//是否加急 1.是 2.否
-        item.put("PayUse",payUse);
-        item.put("Purpose",payUse);
+        item.put("Remark",fymx);//附言
+        item.put("PayUse",purpose);//摘要长度上限20
+        item.put("Purpose",purpose);
 
         Map paymentRec = new HashMap();
         paymentRec.put("ReceiveAccountNo",skfyhzh);
@@ -244,12 +248,26 @@ public class LianAnGyServiceImpl implements LianAnGyPayService {
                     String relPaymentDate2 = UtilMap.getString(map, "RelPaymentDate");
                     String failReasons2 = UtilMap.getString(resultInfo, "FailReasons");
 
-                    //更新付款明细
-                    ydClient.operateData(YDParam.builder()
+                    //查询付款明细
+                    List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
                             .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mjs6mcfn, textField_mk128ce5", billsPayOrderNo, billsPayOrderNo2)))
-                            .formUuid("FORM-2D646B4D1C1F4628A0DEA1072656901143Y9")
-                            .formDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mjs6mcgg, dateField_mkdm7y7c, textareaField_mjs6mcgf",PayStatusName2,DateUtil.parse(relPaymentDate2, "yyyy-MM-dd").getTime(),failReasons2)))
-                            .build(), YDConf.FORM_OPERATION.upsert);
+                            .formUuid("FORM-2D646B4D1C1F4628A0DEA1072656901143Y9").build(), YDConf.FORM_QUERY.retrieve_list).getData();
+
+                    //付款明细逐条更新 防止集成自动化并发
+                    for (Map datum : data) {
+                        String detailFormInstId = UtilMap.getString(datum, "formInstanceId");
+
+                        ydClient.operateData(YDParam.builder()
+                                .formInstanceId(detailFormInstId)
+                                .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mjs6mcgg, dateField_mkdm7y7c, textareaField_mjs6mcgf",PayStatusName2, Strings.isNotBlank(relPaymentDate2) ? DateUtil.parse(relPaymentDate2, "yyyy-MM-dd").getTime() : null,failReasons2)))
+                                .build(), YDConf.FORM_OPERATION.update);
+
+                        try {
+                            Thread.sleep(3000);
+                        } catch (InterruptedException e) {
+                            throw new RuntimeException(e);
+                        }
+                    }
                 }
             }else {
                 //无付款明细
@@ -267,9 +285,7 @@ public class LianAnGyServiceImpl implements LianAnGyPayService {
                             .formDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mjs6mcgg, dateField_mkdm7y7c, textareaField_mjs6mcgf",payStatusName,DateUtil.parse(relPaymentDate, "yyyy-MM-dd").getTime(),failReasons)))
                             .build(), YDConf.FORM_OPERATION.upsert);
                 }
-
             }
-
         }else {
             //付款单生成失败
             String failReasons = UtilMap.getString(resultInfo, "FailReasons");
@@ -332,7 +348,7 @@ public class LianAnGyServiceImpl implements LianAnGyPayService {
         String note = UtilMap.getString(formData, "textareaField_mkdsowjj");//备注
         item.put("Remark",note);//备注
         String payUse = UtilMap.getString(formData, "textareaField_mjmc84h9");//费用明细
-        item.put("PayUse",payUse);
+        item.put("PayUse","工资");//摘要长度上限20
         item.put("Purpose","工资");
 
         List<Map> batchPrivateRecList = new ArrayList<>();
@@ -369,6 +385,84 @@ public class LianAnGyServiceImpl implements LianAnGyPayService {
         return McR.success();
     }
 
+    @Override
+    public McR reimburse(Map map) {
+        String formInstId = UtilMap.getString(map, "formInstId");
+
+        Map item = new HashMap();
+
+        Map formData = ydClient.queryData(YDParam.builder()
+                .formInstanceId(formInstId)
+                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+
+        String fkgs = UtilMap.getString(formData, "textField_mjzgymw0");//付款公司
+        String fkfyhzh = UtilMap.getString(formData, "textField_mjzgymw1");//付款方银行账号
+
+        int retryNUM = UtilMap.getInt(formData, "numberField_mkp4wc2r");//重试次数
+
+        if (retryNUM > 0){
+            item.put("BillsPayOrderNo",formInstId + "_" + retryNUM);//外部系统单据编号
+        }else {
+            item.put("BillsPayOrderNo",formInstId);//外部系统单据编号
+        }
+
+        //时间戳转化为yyyy-MM-dd
+        long fkrq = UtilMap.getLong(formData, "dateField_mkdsowjd");
+        String fkrqStr = DateUtil.format(new Date(fkrq), "yyyy-MM-dd");
+        item.put("PaymentDate",fkrqStr);//付款日期(期望支付日期)
+        item.put("BusinessTypeCode",GYPAY_API_TYPE_NO);//业务类型编号
+        item.put("BusinessTypeName",GYPAY_API_TYPE_NAME);//业务类型名称
+        item.put("PayOrgName",fkgs);//付款单位名称
+        item.put("PayAccountNo",fkfyhzh);//付款方银行账号
+        String payChannel = UtilMap.getString(formData, "selectField_mjm87v3v");
+        String payChannelValue = "";
+        //支付方式 1.直联支付 2.线下支付 3.全额支付 4.差额支付
+        switch (payChannel){
+            case "直联支付":payChannelValue = "1";break;
+            case "线下支付":payChannelValue = "2";break;
+            default:break;
+        }
+        item.put("PayChannel",payChannelValue);
+        item.put("SumPayAmount",UtilMap.getDouble(formData, "numberField_mkdsowjo").toString());//合计付款金额
+        item.put("PayCurrencyType","CNY");//币种(为空,默认: CNY 有付款账号时,不能为 空)
+
+        item.put("PayCurrencyName","人民币");//币种名称(为空,默认:人民币, 有付款账号时,不能为空)
+        String whetherUrgent = UtilMap.getString(formData, "radioField_mkdsowje");
+        item.put("WhetherUrgent","是".equals(whetherUrgent) ? 1 : 2);//是否加急 1.是 2.否
+        String note = UtilMap.getString(formData, "textareaField_mkdsowjj");//备注
+        item.put("Note",note);//备注
+
+        List<Map> paymentRecList = new ArrayList<>();
+
+        List<Map> details = UtilMap.getList(formData, "tableField_mjm9e1zc");
+        for (Map detail : details) {
+            String billsPayOrderNo = UtilMap.getString(detail,"textField_mk1278lu");//收款方单据编号
+            String privateAmount = UtilMap.getDouble(detail,"numberField_mjm9e1zl").toString();//付款金额
+            String receiveAccountNo = UtilMap.getString(detail,"textField_mjm9e1zf");//收款方银行账号
+            String receiveAccountName = UtilMap.getString(detail,"textField_mjm9e1zg");//收款方账户名称
+            String payUse = UtilMap.getString(detail,"textareaField_mjsl53kh");//费用明细
+
+            Map paymentRec = new HashMap();
+            paymentRec.put("BillsPayOrderNo",billsPayOrderNo);
+            paymentRec.put("PrivateAmount",privateAmount);
+            paymentRec.put("ReceiveAccountNo",receiveAccountNo);
+            paymentRec.put("ReceiveAccountName",receiveAccountName);
+            paymentRec.put("PayUse","报销");//摘要长度上限20
+            paymentRec.put("Purpose","报销");
+
+            paymentRecList.add(paymentRec);
+        }
+
+        item.put("PaymentRecList",paymentRecList);
+
+        Map<String,Object> data = UtilMap.map("ParamSet", Arrays.asList(item));
+
+        Map result = gyPost("T0022", data);
+
+
+        return McR.success();
+    }
+
     private Map gyPost(String MesgNo,Map<String,Object> data){
         log.info("data:{}",data);
 

+ 20 - 0
mjava-lianan/src/main/java/com/malk/lianan/service/impl/LianAnServiceImpl.java

@@ -0,0 +1,20 @@
+package com.malk.lianan.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.malk.lianan.service.LianAnService;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.service.aliwork.YDClient;
+import com.malk.utils.UtilMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class LianAnServiceImpl implements LianAnService {
+    @Autowired
+    private YDClient ydClient;
+
+}