From c1f8d27004c029d397276b7213dab0a04c03f638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=B4=B5=E5=BC=BA?= Date: Fri, 20 Jun 2025 13:12:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E4=BB=93=E6=88=90=E6=9C=AC=E7=A7=91?= =?UTF-8?q?=E7=9B=AE=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A32.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shkd/repc/task/DobeDWaccountTask.java | 65 ++++++++++--------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/main/java/shkd/repc/task/DobeDWaccountTask.java b/main/java/shkd/repc/task/DobeDWaccountTask.java index d103206..7bb4872 100644 --- a/main/java/shkd/repc/task/DobeDWaccountTask.java +++ b/main/java/shkd/repc/task/DobeDWaccountTask.java @@ -27,10 +27,7 @@ import okhttp3.Response; import shkd.utils.DobeDWUtils; import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 后台任务插件 @@ -113,6 +110,7 @@ public class DobeDWaccountTask extends AbstractTask implements Plugin { List toAddList = new ArrayList<>(); int updateCount = 0; // 记录更新条数 int addCount = 0; // 记录新增条数 + Set processedCodes = new HashSet<>(); // 记录已处理的编码 for (int i = 0; i < detailsJson.size(); i++) { JSONObject jsonObject = detailsJson.getJSONObject(i); @@ -120,6 +118,13 @@ public class DobeDWaccountTask extends AbstractTask implements Plugin { if ("启用".equals(status)) { String code = jsonObject.getString("costsubject_code"); + // 如果已经处理过这个编码,则跳过 + if (processedCodes.contains(code)) { + logger.info("跳过重复编码: {}", code); + System.out.println("[MyLog]跳过重复编码: " + code); + continue; + } + processedCodes.add(code); // 标记为已处理 if (code != null) { boolean found = false; @@ -144,31 +149,35 @@ public class DobeDWaccountTask extends AbstractTask implements Plugin { System.out.println("[MyLog]更新科目: " + jsonName + ", 编码: " + code); logger.info("更新科目名称: {}, 编码: {}", jsonName, code); } + int caentryLevel = dynamicObject.getInt("caentry_level"); + if (caentryLevel!=3){ + continue; + } //会计科目 String accSubjectCode = jsonObject.getString("accsubject_code"); if (accSubjectCode!=null){ - DynamicObject sysAccount = dynamicObject.getDynamicObject("caentry_account"); - if (sysAccount==null){ - //直接匹配会计科目赋值id - Long accountId=this.getSysAccountId(accSubjectCode); - if (accountId!=null){ - dynamicObject.set("caentry_account",accountId); - logger.info("成功关联会计科目,科目编码: {}, 会计科目ID: {}", code, accountId); - System.out.println("[MyLog]关联会计科目: " + code + " -> " + accountId); - } - }else { - //编码匹配是否改变 - String number = sysAccount.getString("number"); - if (!accSubjectCode.equals(number)){ - //匹配会计科目赋值id - Long accountId=this.getSysAccountId(accSubjectCode); + DynamicObject sysAccount = dynamicObject.getDynamicObject("caentry_account"); + if (sysAccount==null){ + //直接匹配会计科目赋值id + DynamicObject accountId=this.getSysAccountId(accSubjectCode); if (accountId!=null){ dynamicObject.set("caentry_account",accountId); - logger.info("更新会计科目关联成功,科目编码: {}, 新会计科目ID: {}", code, accountId); - System.out.println("[MyLog]更新会计科目关联: " + code + " -> " + accountId); + logger.info("成功关联会计科目,科目编码: {}, 会计科目ID: {}", code, accountId); + System.out.println("[MyLog]关联会计科目: " + code + " -> " + accountId); + } + }else { + //编码匹配是否改变 + String number = sysAccount.getString("number"); + if (!accSubjectCode.equals(number)){ + //匹配会计科目赋值id + DynamicObject accountId=this.getSysAccountId(accSubjectCode); + if (accountId!=null){ + dynamicObject.set("caentry_account",accountId); + logger.info("更新会计科目关联成功,科目编码: {}, 新会计科目ID: {}", code, accountId); + System.out.println("[MyLog]更新会计科目关联: " + code + " -> " + accountId); + } } } - } } break; // 找到匹配项后跳出循环 } @@ -201,14 +210,10 @@ public class DobeDWaccountTask extends AbstractTask implements Plugin { * @param accSubjectCode * @return */ - private Long getSysAccountId(String accSubjectCode) { - Long pkValue = null; + private DynamicObject getSysAccountId(String accSubjectCode) { QFilter number = new QFilter("number", QCP.equals, accSubjectCode); - DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("bd_accountview", number.toArray()); - if (dynamicObject!=null){ - pkValue= (Long) dynamicObject.getPkValue(); - } - return pkValue; + + return BusinessDataServiceHelper.loadSingle("bd_accountview", number.toArray()); } /** @@ -360,7 +365,7 @@ public class DobeDWaccountTask extends AbstractTask implements Plugin { // 3. 会计科目 String accSubjectCode = jsonObject.getString("accsubject_code"); if (jsonObject.getString("accsubject_code") != null) { - Long accountId=this.getSysAccountId(accSubjectCode); + DynamicObject accountId=this.getSysAccountId(accSubjectCode); if (accountId!=null){ dynamicObject.set("caentry_account",accountId); }