Prechádzať zdrojové kódy

凭证同步增加字段逻辑

turborao 2 dní pred
rodič
commit
3e7e756ba2

+ 31 - 0
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/mservice/impl/SynSapFIServiceImpl.java

@@ -8,8 +8,10 @@ import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.QueryServiceHelper;
 
+import kd.bos.servicehelper.operation.SaveServiceHelper;
 import kd.bos.util.StringUtils;
 import nckd.jimin.jyyy.fi.mservice.SynSapService;
 import nckd.jimin.jyyy.fi.mservice.SyncSapFIUtils;
@@ -108,6 +110,35 @@ public class SynSapFIServiceImpl implements SynSapService {
                     logger.info("同步SAP凭证:"  + voucherInfo + ",错误信息:" + msg + "|" + notes);
                     errCount++;
                 }else{
+
+                    /**
+                     * 需要保存SAP返回的值
+                     */
+                    // 1. 查询 gl_voucher 对象
+                    DynamicObject voucherDyn = BusinessDataServiceHelper.loadSingle(vouchsreId, "gl_voucher");
+
+                    if (voucherDyn != null) {
+                        /**
+                         * 2. 解析 SAP 返回的 JSON 数据
+                         * 同步SAP凭证 retur:{"E_MESSAGE":"创建成功!","E_TYPE":"S","E_XBLNR"."" "ET RETURN":{"item":[{"BKTXT":"BX2010202506-0030","ZZTM""FDZT","TYPE":"S","MESSAGE":"V凭证已成功预制:BKPFF 160000005620102025 S4DCLIT120"}]}}
+                         * */
+                        String regex = ".*\\s(\\d+)\\s([A-Z0-9]+)";
+
+                        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(regex);
+                        java.util.regex.Matcher matcher = pattern.matcher(msg);
+
+                        if (matcher.find()) {
+                            String eXblnr = matcher.group(1); // 160000005620102025
+                            String bktxt = matcher.group(2); // S4DCLIT120
+                            // 3. 设置 gl_voucher 对象的字段
+                            voucherDyn.set("nckd_xblnr", eXblnr); // 设置 E_XBLNR 到 nckd_xblnr
+                            voucherDyn.set("nckd_xrlnr_alt", bktxt); // 设置 BKTXT 到 nckd_xrlnr_alt
+                        }
+
+                        // 保存更新后的 gl_voucher 对象
+                        SaveServiceHelper.save(new DynamicObject[]{voucherDyn});
+                    }
+
                     count++;
                 }
             }